.removeData不删除数据ID

时间:2012-08-22 19:17:33

标签: jquery

我有以下代码,显示一个对话框以确认是否应删除某个项目。问题是,每次单击删除按钮时,每次都会将项目的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'));
});

1 个答案:

答案 0 :(得分: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元素上。通过多次显示对话框确认,并多次确认删除。如果警报开始发生的次数越来越多,那么您将重新绑定事件。