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 番目の製品を削除すると、2 は ajax 呼び出しを実行します。1 つは記事 1 用で、もちろん既に削除されているため成功しています。もう 1 つは 2 番目の記事用です。

彼が3つのajax呼び出しを実行しているときに何か他のものを削除した場合など..

古いIDのようにメモリに保持されます...この奇妙な動作を解決できますか?

原因は何ですか?

4

1 に答える 1

3

これは、削除ボタンのクリック ハンドラー内に確認コールバック ハンドラーを登録しているためです。したがって、最初に削除ボタンをクリックすると、ハンドラーが1回登録されるため、ajaxリクエストが1回送信されます。削除ボタンを 2 回クリックすると、確認ハンドラがもう 1 つ登録され、確認ハンドラが 2 つ登録されます。

そのはず

$('.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 に答える