Php 表格记录删除确认问题
HTML: 我有这个代码,我的问题是: 每次我触发一个按钮来打开模式并关闭该模式(其唯一目的是确认删除操作),而不确认删除操作。。。比如说:Php 表格记录删除确认问题,php,jquery,html,ajax,Php,Jquery,Html,Ajax,HTML: 我有这个代码,我的问题是: 每次我触发一个按钮来打开模式并关闭该模式(其唯一目的是确认删除操作),而不确认删除操作。。。比如说:#random_data_1被触发但被解除,#random_data_2也是如此,当我确认#random_data_3时,所有3条记录都被确认删除 为什么会这样?我怀疑事件的实例会被复制,一旦确认,所有实例都会被执行。我错了吗?因为这就像是根据触发的点击事件(绑定到按钮[id^=random_data_])的数量,ajax调用被多次触发。虽然您只提供了部分代
#random_data_1
被触发但被解除,#random_data_2
也是如此,当我确认#random_data_3
时,所有3条记录都被确认删除
为什么会这样?我怀疑事件的实例会被复制,一旦确认,所有实例都会被执行。我错了吗?因为这就像是根据触发的点击事件(绑定到按钮[id^=random_data_])的数量,ajax调用被多次触发。虽然您只提供了部分代码,但如果您使用的是引导模式,那么您的怀疑可能是正确的:每次单击按钮,在#modal delete confirm中添加了一个新的单击处理程序,但现有的单击处理程序也保留了下来。即使您三次单击同一按钮并三次取消模式,三个单击处理程序也将附加到该按钮 我只会添加一次点击处理程序,并以某种方式将数据传递给按钮,例如
//document.ready
$('button[id^="random_data_"]').on('click', function() {
$('#modal').modal('show');
$('#modal-delete-confirm').on('click', function() {
$.ajax({
...
});
});
});
我正在经历一个类似的场景,这应该是可行的,但是是否有一种“优雅”的方式可以在每个模式下销毁这些附加的处理程序?我已经尝试了.off()函数,但它完全消除了事件侦听器,使按钮变得“无用”。你是说只分离单击处理程序?您可以传递一个命名函数,并将相同的函数传递给.off(),而不是将匿名函数传递给.on()——请参见.off()文档中的示例。
//document.ready
$('button[id^="random_data_"]').on('click', function() {
$('#modal').modal('show');
$('#modal-delete-confirm').on('click', function() {
$.ajax({
...
});
});
});
$('button[id^="random_data_"]').on('click', function() {
$('#modal-delete-confirm').data('which', this.id);
$('#modal').modal('show');
});
$('#modal-delete-confirm').on('click', function() {
var which = $(this).data('which');
if (typeof which == 'undefined') {
console.log('How could this possibly happen?');
return;
}
console.log("has to delete " + which);
// Now do the thing based on the value of which
});