使用按钮

时间:2019-01-10 22:49:54

标签: javascript jquery html woocommerce

感谢阅读!

我目前正在编辑要与WooCommerce一起使用的代码段,我想在输入字段的两侧放置-/ +按钮以控制排序(使操作更加容易)。

我可以使用它,但是当前代码编辑所有数量字段。 有没有办法可以只编辑与按钮位于同一父容器中的字段?

请注意: 我不能轻易更改输入字段的HTML,它是由WooCommerce生成的。

CODEPEN:

JQuery:

    $(document).ready(function () {
    $('.qty').prop('disabled', true);
    $(document).on('click', '.plus', function () {
        $('.qty').val(parseInt($('.qty').val()) + 1);
    });
    $(document).on('click', '.minus', function () {
        $('.qty').val(parseInt($('.qty').val()) - 1);
        if ($('.qty').val() == 0) {
            $('.qty').val(1);
        }
    });
});

前端HTML (页面上的许多实例,仅在同一父级中进行编辑的原因):

<td class="woocommerce" data-product-id="623">
  <span class="fa fa-minus minus"></span>
  <div class="quantity">
    <label class="screen-reader-text" for="quantity_5c37ca4c2084e">Quantity</label>
    <input type="number" id="quantity_5c37ca4c2084e" class="input-text qty text" step="1" min="0" max="9" name="quantity_623" value="0" title="Qty" size="4" pattern="[0-9]*" inputmode="numeric" aria-labelledby="10 day quantity" disabled="">
  </div>
  <span class="fa fa-plus plus"></span>
</td>

非常感谢任何智慧,在此先感谢您!! <3

2 个答案:

答案 0 :(得分:1)

您可以使用.parent().find()并尝试如下操作:

$(document).ready(function () {
    $('.qty').prop('disabled', true);
    $(document).on('click', '.plus', function () {
        var qtyElement = $(this).parent().find('.qty');
        var currentQuantity = parseInt(qtyElement.val());
        qtyElement.val(currentQuantity + 1);
    });
    $(document).on('click', '.minus', function () {
        var qtyElement = $(this).parent().find('.qty');
        var currentQuantity = parseInt(qtyElement.val());
        qtyElement.val(currentQuantity - 1);

        if (currentQuantity == 0) {
            qtyElement.val(1);
        }
    });
});

顺便说一句,在-(减号)代码中,如果值是0,则将最小值设置为1。这是您的意图吗?如果您不希望它为负数,则可以将其更改为:

if (currentQuantity <= 0) {
    qtyElement.val(0);   // or qtyElement.val(1); if you want minimum of 1 
}

答案 1 :(得分:1)

您可以使用.closest()方法来查找封闭的父元素,然后找到输入字段。

$(document).ready(function () {
  $('.qty').prop('disabled', true);
  $(document).on('click', '.plus', function (event) {
    var field = $(event.target).closest('.woocommerce').find('.qty');
    $(field).val(parseInt($('.qty').val()) + 1);
  });
  $(document).on('click', '.minus', function (event) {
    var field = $(event.target).closest('.woocommerce').find('.qty');
    $(field).val(parseInt($('.qty').val()) - 1);
    if ($('.qty').val() == 0) {
        $('.qty').val(1);
    }
  });
});