当前位置: 首页 > 知识库问答 >
问题:

jQuery代码控制所有块,而不是所选块

赏育
2023-03-14

我有这个HTML块来控制一个数量:

<div class="cart-product-quantity">
    <div class="quantity m-l-5">
        <input type="button" class="minus" value="-">
        <input type="text" class="qty" value="1">
        <input type="button" class="plus" value="+">
    </div>
</div>

下面是jQuery代码:

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

我的问题是因为我在很多地方都有HTML,JS代码控制所有的块,而它应该控制选定的块。

请问我怎么换这个?

多谢了。

共有2个答案

拓拔骁
2023-03-14

.cart-product-quantity>.quantity块上设置事件可以确保事件在正确的位置触发。请查看下面的片段。

null

$(document).ready(function () {
    setProductQuantityEvents();
});

function setProductQuantityEvents() {
    var $productQuantity = $('.cart-product-quantity>.quantity');
    $productQuantity.find('.qty').prop('disabled', true);
    $productQuantity.on('click', '.plus', function () {
        var $this = $(this),
            $quantity = $this.siblings('.qty'),
            qty = parseInt($quantity.val()) + 1;
        $quantity.val(qty);
    }).on('click', '.minus', function () {
        var $this = $(this),
            $quantity = $this.siblings('.qty'),
            qty = parseInt($quantity.val()) - 1;
        $quantity.val(qty < 1 ? 1 : qty);
    })
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="cart-product-quantity">
    <div class="quantity m-l-5">
        <input type="button" class="minus" value="-">
        <input type="text" class="qty" value="1">
        <input type="button" class="plus" value="+">
    </div>
</div>
<div class="cart-product-quantity">
    <div class="quantity m-l-5">
        <input type="button" class="minus" value="-">
        <input type="text" class="qty" value="1">
        <input type="button" class="plus" value="+">
    </div>
</div>
<div class="cart-product-quantity">
    <div class="quantity m-l-5">
        <input type="button" class="minus" value="-">
        <input type="text" class="qty" value="1">
        <input type="button" class="plus" value="+">
    </div>
</div>
宋畅
2023-03-14

您需要在click事件处理程序中使用this关键字来引用单击的按钮。从那里,您可以遍历DOM以找到相关的input元素,在下面的示例中,我使用siblings()

此外,请注意,您可以使用math.max()简化确保值不能小于1的条件。试试看:

null

jQuery($ => {
  $('.qty').prop('disabled', true);
  
  $('.plus').click(function() {
    $(this).siblings('.qty').val((i, v) => parseInt(v, 10) + 1);
  });
  
  $('.minus').click(function() {
    $(this).siblings('.qty').val((i, v) => Math.max(1, parseInt(v, 10) - 1));
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="cart-product-quantity">
  <div class="quantity m-l-5">
    <input type="button" class="minus" value="-">
    <input type="text" class="qty" value="1">
    <input type="button" class="plus" value="+">
  </div>
</div>
<div class="cart-product-quantity">
  <div class="quantity m-l-5">
    <input type="button" class="minus" value="-">
    <input type="text" class="qty" value="1">
    <input type="button" class="plus" value="+">
  </div>
</div>
 类似资料:
  • 本文向大家介绍jquery获取所有选中的checkbox实现代码,包括了jquery获取所有选中的checkbox实现代码的使用技巧和注意事项,需要的朋友参考一下 获取所有name为spCodeId的checkbox 以上这篇jquery获取所有选中的checkbox实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 如果我只运行几个线程,其中一些线程调用静态函数,而另一些线程创建新实例。我希望在每次对的调用中获得当时实例的实际数量。 代码中的两个选项有区别吗? 如果我锁定“”,这是否意味着在构造函数退出synchronized块之前,我不能调用(假设我没有在getCount()上编写synchronize)。 如果我在代码中的某个地方执行同步块,它是只锁定同步块还是锁定所有“”代码? 从这里开始编辑:谢谢大家

  • 问题内容: 我的单元测试与集成测试位于单独的目录树中,但是具有相同的包结构。我的集成测试需要外部资源(例如服务器)可用,但是我的单元测试彼此之间以及与环境之间是完全独立的。 在IntelliJ-IDEA(v7)中,我定义了一个JUnit运行/调试配置,以运行顶层程序包中的所有测试,并且这当然会拾取失败的集成测试。 我想定义一个运行所有单元测试的运行junit配置。有任何想法吗? 问题答案: 答案是

  • 我正在尝试将edgetpu USB加速器与Intel ATOM单板计算机和C API结合使用,以进行实时推断。 edgetpu的C API基于TensorFlow lite C API。我需要包括来自tensorflow/lite目录的头文件(例如tensorflow/lite/interpreter.h)。 我的问题是我可以只使用Lite(而不是用于训练的其他操作)构建张量流吗?如果是,我该怎么

  • 问题内容: 如何使用jQuery访问asp.net控件 不会工作。 问题答案: 上面的aspx代码在页面上呈现时变为 这是因为.net控件所在的主控信息和控制信息被预先放置,这使我们编写选择器变得有些棘手。 您有几种选择。这绝不是全面的,但我会尝试一下。 选项1: 使用-推荐,但不是。如果可以的话,我会尽量避免写作。主要原因是,您只能在页面中使用它,而不能在外部文件中使用它。 选项2: 使用属性选

  • 问题内容: 我有一个正在创建的用户控件,它使用jQuery中的一些AJAX。 我需要在控件的代码后面调用一个函数,但是我在网上找到的每个示例都像这样: 如果我在Default.aspx页中有该方法,则此方法很好。但是我不想在那儿有函数,我需要在控件的代码背后添加函数。如何修改url属性以调用正确的函数? 我试过了: 但这没用。 问题答案: 您不能… WebMethods必须位于WebService