Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表格记录删除确认问题_Php_Jquery_Html_Ajax - Fatal编程技术网

Php 表格记录删除确认问题

Php 表格记录删除确认问题,php,jquery,html,ajax,Php,Jquery,Html,Ajax,HTML: 我有这个代码,我的问题是: 每次我触发一个按钮来打开模式并关闭该模式(其唯一目的是确认删除操作),而不确认删除操作。。。比如说:#random_data_1被触发但被解除,#random_data_2也是如此,当我确认#random_data_3时,所有3条记录都被确认删除 为什么会这样?我怀疑事件的实例会被复制,一旦确认,所有实例都会被执行。我错了吗?因为这就像是根据触发的点击事件(绑定到按钮[id^=random_data_])的数量,ajax调用被多次触发。虽然您只提供了部分代

HTML:

我有这个代码,我的问题是:

每次我触发一个按钮来打开模式并关闭该模式(其唯一目的是确认删除操作),而不确认删除操作。。。比如说:
#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
});