0

jQuery を使用して送信する予定のフォームがあります。次のコードは、初めて正常に動作します。

返されるデータが「更新済み」の場合、#cart-content 要素内でフォームを再作成します。つまり、フォームを送信してカートを更新すると、サイトに新しいフォームが作成されます (同じクラス、同じ入力などがあります)。

その後、もう一度送信をクリックすると、jQuery コードがトリガーされません。ページがロードされたときに存在しなかった新しいフォームであるため、jQueryはそのイベントにバインドされておらず、フォームを送信してもトリガーされないためだと思います。

動作させるには何を変更する必要がありますか? 前もって感謝します!

$("form.update-cart").on("submit", function(event){
        $.post(link + "create_order/update_cart",  $(this).serialize(),  
        function(data){  
            if(data == 'updated')
            {
                var csrf_cookie = $.cookie('csrf_cookie_name');
                $("#cart-content").load(link + "create_order/display_cart", {"csrf_test_name": csrf_cookie});
            }
            else if(data == 'nothing-to-update')
            {
                return false;
            }
            else
            {  
                alert("Couldnt update cart!");  
            }  
        });  
        return false; 
});
4

3 に答える 3

2

それを試してみてください:

$("form.update-cart").live("submit", function(event){

于 2012-10-15T13:30:28.807 に答える
2

あなたと Catalin Ene に応えて、jQuery の「ライブ」機能は jQuery から廃止されます。

jQuery 1.7.x以降onを使用している場合は、" " 関数を使用する必要があります。

$("form.update-cart").on("submit", function(event) {

また、 jQuery のバージョンが 1.7 より前のdelegate場合は、 " " を使用できます。

$("form.update-cart").delegate("submit", "#submit_btn", function(event) {

また、アドバイス: サーバー側スクリプトから XML または JSON 出力を使用することをお勧めします。

于 2012-10-15T13:35:33.653 に答える
-1

私はそれを理解しましたが、私ができる限り早く答えを受け入れません。ありがとう!

$(document).on("submit", "form.update-cart", function(event) {
        $.post(link + "create_order/update_cart",  $(this).serialize(),  
        function(data){  
            if(data == 'updated')
            {
                var csrf_cookie = $.cookie('csrf_cookie_name');
                $("#cart-content").load(link + "create_order/display_cart", {"csrf_test_name": csrf_cookie});
            }
            else if(data == 'nothing-to-update')
            {
                return false;
            }
            else
            {  
                alert("Konnte Warenkorb nicht aktualisieren!");  
            }  
        });  
        return false; 
}); 
于 2012-10-15T13:37:11.903 に答える