一种奇怪的现象发生在我身上..
我有一个项目列表,每个项目都有删除按钮来删除该文章,这是一个例子: http://jsfiddle.net/lughino/8HYeQ/5/
$('.delete').on('click', function(e) {
e.preventDefault();
var $li = $(this).parents('li'),
$url = $(this).attr('href');
$('#delete_confirm').modal('show');
$('#delete_confirm').find('button.btn-danger').click(function() {
$.post($url, function(result) {
$('#delete_confirm').modal('hide');
$li.remove();
});
});
});
很遗憾,此示例无法重现此问题!
当我删除id为1的第一篇文章时,执行ajax调用。
当我删除第二个产品时,id为2,运行ajax调用,第1个执行第1条,这样做是成功的,因为当然已经删除了,第一个是第二篇文章。
如果我在执行3次ajax调用时删除其他内容,依此类推......
在内存中维护,好像旧的id ...你能解决这个奇怪的行为吗?
从什么到期?
答案 0 :(得分:3)
这是因为您在删除按钮单击处理程序中注册了确认回调处理程序。因此,当您第一次单击删除按钮时,处理程序已注册一次 - 因此ajax请求将被发送一次。当您第二次单击删除按钮时,会再注册一个确认处理程序,现在我们已经注册了两个确认处理程序。
应该是
$('.delete').on('click', function(e) {
e.preventDefault();
var $li = $(this).parents('li'),
$url = $(this).attr('href');
$('#delete_confirm').modal('show');
});
$('#delete_confirm').find('button.btn-danger').click(function() {
$.post($url, function(result) {
$('#delete_confirm').modal('hide');
$li.remove();
});
});