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方面),但我想我会用闭包或者确保用户无法再次单击外部元素。通过禁用它或使用模态覆盖。