2

一个奇怪的现象发生在我身上..

我有一个项目列表,每个项目旁边都有删除按钮来删除那篇文章,这里是一个例子: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 的产品时,有 2 个运行 ajax 调用,一个用于第 1 条,这是成功的,因为当然已经被删除了,一个用于第二条。

如果我在他执行 3 次 ajax 调用时删除了其他内容,依此类推..

就像旧的id一样保存在内存中……你能解决这个奇怪的行为吗?

从什么到期?

4

1 回答 1

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();
    });
});
于 2013-08-25T02:30:06.127 回答