jquery - jQuery 代码控制所有块而不是选定的块
问题描述
我有这个 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 代码控制着所有的块,而它应该控制选定的块。
请问我该如何更改?
谢谢。
解决方案
您需要this
在事件处理程序中使用关键字click
来引用单击的按钮。从那里您可以遍历 DOM 以查找相关input
元素,在下面的示例中我使用siblings()
.
另外请注意,您可以通过使用 来简化确保值不能小于 1 的条件Math.max()
。尝试这个:
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>
推荐阅读
- regex - 在 Gatsby GraphQL 正则表达式过滤器中转义单词字符选择器
- c++ - 关于模板类中别名声明的问题
- python - PyQt5 - 在新窗口中打开 QMediaplayer 并播放视频
- c++ - 在 OpenGL 动画中限制 fovy
- c - 如何在 C 中正确使用 extern
- c# - 无法使用 Miniprofiler 打印查询
- delphi - 如何按字母顺序对 TListBox 控件中的日文字符串列表进行排序?
- java - 在尖括号内输入 - 这是什么意思?
- python - 使用 Python 乌龟图形创建砖墙
- android - 应用程序在特定设备上的 setContentView 上崩溃