1

なぜこれが機能しないのか理解できないようです。以下のリンクを確認してから3人のゲストを追加し、1人を削除するとカウンターが精神的になります。

http://www.waterfrontexeter.co.uk/preordernew/

    var count = 1;
    $(".removeOrder").on('click', function(){

                count--;
                $("#counter").html("Total Number of Guest: " + count);
                $("input[id=totalguest]").val("Total Number of Guest: " + count);

        });

これはこれまでの私のコードです、私が思うにすべてがうまく見えますか?私はこれの逆を試しました、そしてそれはうまく合算しました。

4

2 に答える 2

1

問題は、Webサイトのjsコードが適切に構造化されていないことだと思います。この種のエラーを回避するには、より柔軟な方法で実行することをお勧めします。

...
count = $(".duplicate").length; 
...

または、さらに良いことに、文字列を直接記述し、カウンターを変数に格納しないでください。

var strCount = '';
...
strCount = "Total Number of Guest: " + $(".duplicate").length;
$("#counter").html(strCount);
$("input[id=totalguest]").val(strCount);
于 2013-03-26T17:14:00.077 に答える
1

問題の1つは、[ゲストの追加]ボタンをクリックするたびに新しいクリックハンドラーを作成することです...

$(".add").click(function () {
    $(".removeOrder").on('click', function(){
        $(this).parents(".duplicate").remove();
        count--;
        $("#counter").html("Total Number of Guest: " + count);
        $("input[id=totalguest]").val("Total Number of Guest: " + count);
    });
});

これを実行すると何が起こっているのでしょうか。クリックハンドラーがたくさん追加されています。

経験則として、イベントコールバック内にクリックハンドラーを追加しないでください。

これを修正するには、クリックハンドラーを委任されたイベントに移動する必要があります...

$(document).on('click', '.removeOrder', function(){
    $(event.target).closest(".duplicate").remove();
    count--;
    $("#counter").html("Total Number of Guest: " + count);
    $("input[id=totalguest]").val("Total Number of Guest: " + count);
});
于 2013-03-26T17:37:03.073 に答える