1

イベントで要素を削除しようとしているところに問題があります。この削除イベントは、クリックされた要素とその上のオブジェクトに適用されます。次のajax呼び出しは、変更されないボタンに適用すると機能しますが、適用したいボタンに適用したときにページが新たにリロードされたときにのみ機能します。

/discards a card based upon what button is pressed 
$(".discardCard").on('click',function(){ 
    //alert('button linked') //buttons are linked no longer need
    playerid = $(this).attr("data-xml");
    dCard = $(this).attr("dCard");
    $.ajax({ 
    type: "POST", 
    url: "discardCard.php", 
    data: {player: playerid, dCard:dCard}, 
    success: function(msg){ 
        //alert('ajax function starts');
        $('#playerHands').html(msg);
        //alert('ajax function finishes')
    }
    });
    //alert('1');
});
//alert('2');

以下は、私がイベントを行うつもりであることを示しています。表示された結果を取得するプロセスは、[Discard 1] をクリックし、ページを更新して、[Discard 2] をクリックすることでした。

編集!これで写真を投稿するには担当者が必要ですが、ここで見ることができます: http://i963.photobucket.com/albums/ae118/Akado117/Untitled_zps56a2159c.png .

4

1 に答える 1

0

新しい HTML を取得したら、古い HTML をクリック可能にしたのと同じ方法でクリック可能にする必要があります。つまり.on()、それに対して行う必要があります。

function clickDiscard () { 
    playerid = $(this).attr("data-xml");
    dCard = $(this).attr("dCard");
    $.ajax({ 
        type: "POST", 
        url: "discardCard.php", 
        data: {player: playerid, dCard:dCard}, 
        success: function(msg){  
            $('#playerHands').html(msg);
            // remove existing bindings to avoid double binding...
            $(".discardCard").off("click");
            $(".discardCard").on("click", clickDiscard);
        }
    });
}

$(".discardCard").on("click", clickDiscard);
于 2013-10-15T20:08:45.883 に答える