click事件不会在加载了ajax的对象上触发

时间:2018-08-09 14:23:13

标签: javascript jquery

我正在使用ajax填充购物车。在购物车中,我有一个带有加号和减号按钮的数量字段。 这是按钮的代码:

  <div class="cart-quantity">
                <input type='button' value='+' class='qtyplus CartCount' field='updates_{{ item.id }}' />
<input name="updates[]" id="updates_{{ item.id }}" class="quantity CartCount" value="{{ item.quantity }}" />
      <input type='button' value='-' class='qtyminus CartCount' field='updates_{{ item.id }}' />
  </div>

这是通过加/减按钮更新数量字段的javascript:

// This button will increment the value
$('.qtyplus').on("click", function(){
    // Stop acting like a button

    // Get the field name
    fieldName = $(this).attr('field');
    // Get its current value
    var currentVal = parseInt($('input[id='+fieldName+']').val());
    // If is not undefined
    if (!isNaN(currentVal)) {
        // Increment
        $('input[id='+fieldName+']').val(currentVal + 1);
    } else {
        // Otherwise put a 0 there
        $('input[id='+fieldName+']').val(0);
    }
    e.preventDefault();
$(this).closest('form').submit();
});
// This button will decrement the value till 0
$(".qtyminus").on("click",function() {
    // Stop acting like a button

    // Get the field name
    fieldName = $(this).attr('field');
    // Get its current value
    var currentVal = parseInt($('input[id='+fieldName+']').val());
    // If it isn't undefined or its greater than 0
    if (!isNaN(currentVal) && currentVal > 0) {
        // Decrement one
        $('input[id='+fieldName+']').val(currentVal - 1);
    } else {
        // Otherwise put a 0 there
        $('input[id='+fieldName+']').val(0);
    }
    e.preventDefault();
$(this).closest('form').submit();
});

如您所见,我已经尝试将click事件更改为on click,但是它仍然无法正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

请尝试执行以下操作,而不是直接将click事件绑定到.qtyplus

$(document).on('click', '.qtyplus', function() { /* ... */ });

为获得更好的性能,而不是将其绑定到document,而是使用最接近的.qtyplus父元素。