我有以下代码,显示一个对话框以确认是否应删除某个项目。问题是,每次单击删除按钮时,每次都会将项目的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'));
});
答案 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
元素上。通过多次显示对话框确认,并多次确认删除。如果警报开始发生的次数越来越多,那么您将重新绑定事件。