Javascript ajax成功函数多次触发

Javascript ajax成功函数多次触发,javascript,ajax,Javascript,Ajax,在我的项目中,我正在使用一个函数,该函数使用.ajax()从表和数据库中删除行。我已经为用户单击删除按钮时创建了我的函数。正如您所理解的,有几行,每行都有自己的删除按钮 现在,当用户第一次单击其中一个项目时,会出现一个弹出模式,询问他/她是否确定要删除该项目。当他/她单击“是”时,弹出窗口消失,行淡出。这一切都很完美,但是 当您单击第二个删除按钮而不刷新页面时,JavaScript会触发当前请求的删除(和id)+de前一个。如果你第三次这样做,它将触发当前一个和前两个的 我试图清空当前的var$

在我的项目中,我正在使用一个函数,该函数使用
.ajax()
从表和数据库中删除行。我已经为用户单击删除按钮时创建了我的函数。正如您所理解的,有几行,每行都有自己的删除按钮

现在,当用户第一次单击其中一个项目时,会出现一个弹出模式,询问他/她是否确定要删除该项目。当他/她单击“是”时,弹出窗口消失,行淡出。这一切都很完美,但是

当您单击第二个删除按钮而不刷新页面时,JavaScript会触发当前请求的删除(和
id
)+de前一个。如果你第三次这样做,它将触发当前一个和前两个的

我试图清空当前的
var$(this.attr('data-page-id')
,但当启动
.ajax()
success函数时,它仍会执行相同的操作

$('a.btn-page-delete').click(function() {

    var curPageId = $(this).attr('data-page-id');

    $('#delete-page').modal('show');

    $('a#action-confirm').click(function() {

        $.ajax({

            type       : 'POST',
            url        : '/pages/async/delete',
            dataType   : 'json',
            data       : { page : curPageId },
            success    : function(data) {

                $('#delete-page').modal('hide');

                console.log(curPageId);
                console.log(data);

            },
            error   : function() {}

        });

    });

});
调用外部单击事件处理程序时

$('a.btn-page-delete').click(function() {
它将
.bind()
再次单击事件处理程序以
$('a#action confirm')
。因此,每次执行外部事件时,您都会添加一个以上的事件处理程序

我相信您可以并且应该以更好的方式重新构建和构造它,但在当前状态下,您唯一的选择是
.unbind()
/
.off()
内部单击处理程序,如

 $('a#action-confirm').off('click').click(function() {
这将删除以前通过jQuery绑定的任何单击事件处理程序


参考:

我假设您看到了这种行为,因为每次删除一行时,您都会向动作确认添加一个新的点击事件处理程序。是的,它起作用了。。。但你将如何建造它呢。我是说,这是一个很好的代码,对吗?无论如何谢谢你!dp==显示图片==化身。(dp摘自社交网站“orkut”。它在印度相当有名)。我记得你以前没有任何图片。@Wimbjorno:我不完全了解底层原则(DOM/Gui方面),但我想我会用闭包或者确保用户无法再次单击外部元素。通过禁用它或使用模态覆盖。