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 的“live”功能正在从 jQuery 中弃用

on如果你使用jQuery 1.7.x或更高版本,你应该使用 " " 函数:

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

delegate如果您的jQuery版本低于 1.7 ,您可以使用“ ”:

$("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 回答