我有一些动态生成的html,我在页面加载时添加到DOM,HTML看起来像这样,并且有很多这样的实例(想想网格):
<div class="qty">
<input type="text" class="quantity-input" data-price="2.99"
data-product="Something" value="2">
<div class="control-wrapper">
<span class="increment"> + </span>
<span class="decrement"> - </span>
</div>
</div>
现在我有一个函数可以增加或减少脚本中输入的值,如下所示:
$('#identifier').on('click', '.increment', changeVal);
$('#identifier').on('click', '.decrement', changeVal);
function changeVal(event) {
if(event.target.attributes['class'].value === 'increment') {
$(event.target).closest('.qty').find('input')[0].value++;
} else if (event.target.attributes['class'].value === 'decrement') {
$(event.target).closest('.qty').find('input')[0].value--;
}
}
现在我还有一个函数可以监听输入上的change事件并执行一些计算,就像这样......
$('#identifier').on('change', '.quantity-input', updateItemTotal);
function updateItemTotal(event) {
// do stuff
}
现在,如果用户通过键入手动更改输入值,这很好,但是如果输入值发生变化,changeVal
函数会updateItemTotal
触发,那么它们是否会更改值。当用户使用$('#identifier').on('change', '.quantity-input', updateItemTotal);
)函数
changeVal(event
添加什么事件
非常感谢提前
答案 0 :(得分:0)
您可能希望将计算逻辑移动到单独的函数,并从这两个事件中调用此函数。
答案 1 :(得分:0)
function changeVal(event) {
if(event.target.attributes['class'].value === 'increment') {
$(event.target).closest('.qty').find('input')[0].value++;
}
else if (event.target.attributes['class'].value === 'decrement') {
$(event.target).closest('.qty').find('input')[0].value--;
}
// can you just put the function call here?
updateItemTotal();
}
答案 2 :(得分:0)
您需要触发事件change
的更改才能生效
$(event.target).closest('.qty').find('input').change()[0].value++;
注意:您可以使用$(this)
代替$(event.target)