0

我有以下代码显示一个对话框以确认是否应删除项目。问题是,每次我单击删除按钮时,项目的 id 每次都会添加到#dialog 数据中。

所以我第一次删除时,它会像我期望的那样提醒 id。如果我单击另一个要删除的项目,它也会显示以前的 id。如何正确清除附加到对话框的数据?

// Delete confirmation modals
$('#dialog').on('show', function() {

    var $this = $(this);
    var id = $this.data('id');

    $('#delete-confirm').click(function(e) {
      e.preventDefault();

        $this.removeData('id', id);

        alert(id);

    });
});

$('.delete').click(function(e) {
  e.preventDefault();
  $('#dialog').data('id', $(this).data('id'));
});
4

1 回答 1

3

您永远不会将id变量更新为.data('id')

// Delete confirmation modals
$('#delete-confirm').click(function(e) {
    e.preventDefault();    
    $("#dialog").removeData('id');    
    alert($("#dialog").data('id'));    
});

$('.delete').click(function(e) {
  e.preventDefault();
  $('#dialog').data('id', $(this).data('id'));
});

此外,请确保您没有将多个事件绑定到同一个元素,这可能会发生在delete-confirm元素上。通过使对话框出现多次并多次确认删除来确认。如果警报开始发生的次数越来越多,那么您正在重新绑定该事件。

于 2012-08-22T19:21:45.107 回答