多个增量和减量jquery仍不工作

cwxwcias  于 2021-09-13  发布在  Java
关注(0)|答案(4)|浏览(309)

我正在研究数量特征。在某些部分,它需要超过1个数量。我已经做了1个数量,效果很好。但是当我有一个多重数量时,它就不起作用了。当我单击其中一个按钮时,其他按钮也会受到影响。
我一直在试图找到这个问题的解决方案,但没有任何东西符合我创建的代码。有人能帮我吗?

  1. $(document).ready(function() {
  2. let $input = $(".quantity__value");
  3. $(".quantity__trigger").click(function(){
  4. if ($(this).hasClass('quantity__increment'))
  5. $input.val(parseInt($input.val())+1);
  6. else if ($input.val()>=1)
  7. $input.val(parseInt($input.val())-1);
  8. });
  9. });
  1. .table__checkout__body--qty{
  2. margin-bottom:20px;
  3. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <div class="table__checkout__body--qty">
  3. <div class="wrapper">
  4. <div class="quantity__base">
  5. <button class="quantity__decrement quantity__trigger">-</button>
  6. <input type="text" class="quantity__value" value="0" readonly>
  7. <button class="quantity__increment quantity__trigger">+</button>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="table__checkout__body--qty">
  12. <div class="wrapper">
  13. <div class="quantity__base">
  14. <button class="quantity__decrement quantity__trigger">-</button>
  15. <input type="text" class="quantity__value" value="0" readonly>
  16. <button class="quantity__increment quantity__trigger">+</button>
  17. </div>
  18. </div>
  19. </div>
  20. <div class="table__checkout__body--qty">
  21. <div class="wrapper">
  22. <div class="quantity__base">
  23. <button class="quantity__decrement quantity__trigger">-</button>
  24. <input type="text" class="quantity__value" value="0" readonly>
  25. <button class="quantity__increment quantity__trigger">+</button>
  26. </div>
  27. </div>
  28. </div>
dm7nw8vv

dm7nw8vv1#

问题是 let $input = $(".quantity__value"); 将始终选择所有输入,因为所有输入都具有该类。您需要为输入提供单独的ID,并将其作为参数传递给函数。以下是一个例子:

  1. function change_quantity (id, value) {
  2. let $input = $("#" + id);
  3. $input.val(parseInt($input.val()) + value);
  4. }
  1. .table__checkout__body--qty{
  2. margin-bottom:20px;
  3. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <div class="table__checkout__body--qty">
  3. <div class="wrapper">
  4. <div class="quantity__base">
  5. <button onclick="change_quantity ('input_0', -1)" class="quantity__decrement quantity__trigger">-</button>
  6. <input id="input_0" type="text" class="quantity__value" value="0" readonly>
  7. <button onclick="change_quantity ('input_0', +1)" class="quantity__increment quantity__trigger">+</button>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="table__checkout__body--qty">
  12. <div class="wrapper">
  13. <div class="quantity__base">
  14. <button onclick="change_quantity ('input_1', -1)" class="quantity__decrement quantity__trigger">-</button>
  15. <input id="input_1" type="text" class="quantity__value" value="0" readonly>
  16. <button onclick="change_quantity ('input_1', +1)" class="quantity__increment quantity__trigger">+</button>
  17. </div>
  18. </div>
  19. </div>
  20. <div class="table__checkout__body--qty">
  21. <div class="wrapper">
  22. <div class="quantity__base">
  23. <button onclick="change_quantity ('input_2', -1)" class="quantity__decrement quantity__trigger">-</button>
  24. <input id="input_2" type="text" class="quantity__value" value="0" readonly>
  25. <button onclick="change_quantity ('input_2', +1)" class="quantity__increment quantity__trigger">+</button>
  26. </div>
  27. </div>
  28. </div>
展开查看全部
6qfn3psc

6qfn3psc2#

您可以尝试以下代码:

  1. $(document).ready(function() {
  2. $(".quantity__trigger").click(function(){
  3. let input = $(this).closest('.quantity__base').find('input');
  4. if ($(this).hasClass('quantity__increment'))
  5. $(input).val(parseInt($(input).val())+1)
  6. else if( parseInt($(input).val()) >= 1 )
  7. $(input).val(parseInt($(input).val())-1);
  8. });
  9. });
wlwcrazw

wlwcrazw3#

在单击框内,您需要重新找到相关的/相关的 .quantity__value 而不是在点击之外得到一次

  1. $(".quantity__trigger").click(function() {
  2. var $input = $(this).closest(".wrapper").find(".quantity__value");

更新的代码段:

  1. $(document).ready(function() {
  2. //let $input = $(".quantity__value");
  3. $(".quantity__trigger").click(function(){
  4. var $input = $(this).closest(".wrapper").find(".quantity__value");
  5. if ($(this).hasClass('quantity__increment'))
  6. $input.val(parseInt($input.val())+1);
  7. else if ($input.val()>=1)
  8. $input.val(parseInt($input.val())-1);
  9. });
  10. });
  1. .table__checkout__body--qty{
  2. margin-bottom:20px;
  3. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <div class="table__checkout__body--qty">
  3. <div class="wrapper">
  4. <div class="quantity__base">
  5. <button class="quantity__decrement quantity__trigger">-</button>
  6. <input type="text" class="quantity__value" value="0" readonly>
  7. <button class="quantity__increment quantity__trigger">+</button>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="table__checkout__body--qty">
  12. <div class="wrapper">
  13. <div class="quantity__base">
  14. <button class="quantity__decrement quantity__trigger">-</button>
  15. <input type="text" class="quantity__value" value="0" readonly>
  16. <button class="quantity__increment quantity__trigger">+</button>
  17. </div>
  18. </div>
  19. </div>
  20. <div class="table__checkout__body--qty">
  21. <div class="wrapper">
  22. <div class="quantity__base">
  23. <button class="quantity__decrement quantity__trigger">-</button>
  24. <input type="text" class="quantity__value" value="0" readonly>
  25. <button class="quantity__increment quantity__trigger">+</button>
  26. </div>
  27. </div>
  28. </div>
展开查看全部
wlzqhblo

wlzqhblo4#

不要更改html,对jquery代码做任何您需要的事情,因为在许多项目中,您不能或没有权限更改html输出,所以我编写此代码是为了在不更改html输出的情况下解决您的问题,再加上更少的jquery代码,以便在客户端获得最佳性能
其他建议:
在此场景中不要使用输入类型文本
不要添加“readonly”元素以获得更好的用户体验

  1. $(".table__checkout__body--qty").on('click','.quantity__trigger',function(){
  2. $input = $(this).siblings(".quantity__value");
  3. if ($(this).hasClass('quantity__increment'))
  4. $input.val(parseInt($input.val())+1);
  5. else if(parseInt($input.val())>0)
  6. $input.val(parseInt($input.val())-1);
  7. });
  1. .table__checkout__body--qty{
  2. margin-bottom:20px;
  3. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <div class="table__checkout__body--qty">
  3. <div class="wrapper">
  4. <div class="quantity__base">
  5. <button class="quantity__decrement quantity__trigger">-</button>
  6. <input type="text" class="quantity__value" value="0" readonly>
  7. <button class="quantity__increment quantity__trigger">+</button>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="table__checkout__body--qty">
  12. <div class="wrapper">
  13. <div class="quantity__base">
  14. <button class="quantity__decrement quantity__trigger">-</button>
  15. <input type="text" class="quantity__value" value="0" readonly>
  16. <button class="quantity__increment quantity__trigger">+</button>
  17. </div>
  18. </div>
  19. </div>
  20. <div class="table__checkout__body--qty">
  21. <div class="wrapper">
  22. <div class="quantity__base">
  23. <button class="quantity__decrement quantity__trigger">-</button>
  24. <input type="text" class="quantity__value" value="0" readonly>
  25. <button class="quantity__increment quantity__trigger">+</button>
  26. </div>
  27. </div>
  28. </div>
展开查看全部

相关问题