我有以下代码:
在此处查看有关代码笔的示例:https://codepen.io/Rubenkretek/pen/VwYQVgO?editors=1111
预期结果: 单击“ +”按钮时,输入字段将增加1。
实际结果: 输入没有更改,并出现以下错误:
TypeError:selectedInput.stepUp不是函数
$(function() {
$('<span class="add" uk-icon="plus">+</span>').insertAfter('.product-container .product-quantity input');
$('<span class="sub" uk-icon="minus">-</span>').insertBefore('.product-container .product-quantity input');
$('.add').click(function() {
var selectedInput = $(this).prev('input');
if (selectedInput.val() < 10) {
console.log("value is less than 10");
$('.add').click(function() {
selectedInput.stepUp(1);
});
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-container">
<div class="product-info">
<h2>Product name</h2>
</div>
<div class="product-quantity">
<input type="number"></input>
</div>
</div>
答案 0 :(得分:4)
您正在嵌套事件处理程序。只有一个人并委托
stepUp也是DOM方法,因此您需要从jQuery中获取DOM元素(将[0]添加到该元素)
注意:type = number具有自己的微调控件
$(function() {
$('<span class="add" uk-icon="plus">+</span>').insertAfter('.product-container .product-quantity input');
$('<span class="sub" uk-icon="minus">-</span>').insertBefore('.product-container .product-quantity input');
$('.product-quantity').on("click", '.add, .sub', function() {
const selectedInput = $(this).closest('div').find('input')[0]; // stepUp is a DOM method
let dir = $(this).is(".add");
selectedInput.stepUp(dir ? 1 : -1);
if (selectedInput.value < 10) {
console.log("value is less than 10");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-container">
<div class="product-info">
<h2>Product name</h2>
</div>
<div class="product-quantity">
<input type="number" />
</div>
</div>