0

在下面markup,您可以看到class name is same for every button. 我有更多具有相同类名按钮的按钮。现在,当我单击任何按钮时,它只取last button value. 在这里你可以看到last div值为30。所以点击每个按钮它只取最后一个值。我的 html 标记是这样的

<div class="cart">
  <div>Qty:
    <input type="text" value="10" size="2" name="quantity">
    <input type="hidden" value="42" size="2" name="product_id">
    &nbsp;<input type="button" class="button-cart" value="Add to Cart">
  </div>
  <div>Qty:
    <input type="text" value="20" size="2" name="quantity">
    <input type="hidden" value="42" size="2" name="product_id">
    &nbsp;<input type="button" class="button-cart" value="Add to Cart">
  </div>
  <div>Qty:
    <input type="text" value="30" size="2" name="quantity">
    <input type="hidden" value="42" size="2" name="product_id">
    &nbsp;<input type="button" class="button-cart" value="Add to Cart">
  </div>
</div>

现在我的 jQuery 脚本是这样的

$('.button-cart').click(function() {
    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
        dataType: 'json',
        success: function(json) {
            $('.success, .warning, .attention, information, .error').remove();

            if (json['error']) {
                if (json['error']['option']) {
                    for (i in json['error']['option']) {
                        $('#option-' + i).after('<span class="error">' + json['error']['option'][i] + '</span>');
                    }
                }
            } 

            if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

                //$('.success').fadeIn('slow');

                $('#cart-total').html(json['total']);

                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
                setTimeout(opencartpage(),1000);
            }   
        }
    });
});
4

2 回答 2

0

尝试这个

$(".button-cart").click(
        function()
        {
            var parent_node = $(this).parent("div");
            var quantity = parent_node.find('input[name="quantity"]').val();
            alert(quantity);
        } );

确定您确切点击的类别

于 2012-11-18T16:09:57.403 回答
0

在您的代码中,您将 jQuery 选择器作为 AJAX 方法的数据。这可能没有意义,因为您想要的是名称/值对(或表单字段的其他表示形式)。

对于我认为您想要做的事情(将所有表单字段放入 AJAX 请求中),最简单的解决方案是使用该.serialize()函数。

如果您的所有字段都与 id 格式相同#foobar,则将$('#foobar').serialize()它们全部作为查询字符串返回。

于 2012-11-18T14:57:09.860 回答