jQuery委派的函数被激发
jQuery delegated function being fired?
我有一些动态生成的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--;
}
}
现在我还有一个函数,它监听输入上的更改事件,并执行一些计算,比如…
$('#identifier').on('change', '.quantity-input', updateItemTotal);
function updateItemTotal(event) {
// do stuff
}
现在,如果用户通过键入手动更改输入值,这很好,但如果用户通过changeVal
函数更改值,则在输入值更改时不会触发updateItemTotal
。当用户调用changeVal(event
)函数时,我可以向$('#identifier').on('change', '.quantity-input', updateItemTotal);
添加什么事件
提前感谢
您可能希望将计算逻辑移动到一个单独的函数,并从两个事件中调用此函数。
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();
}
您需要触发事件change
的更改以使工作
$(event.target).closest('.qty').find('input').change()[0].value++;
注意:您可以使用$(this)
而不是$(event.target)
DEMO
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 如何委派查询函数
- 就绪函数中的委派函数
- jQuery委派的函数被激发
- 如何给两个函数委派函数
- CoffeeScript:使用函数绑定的内联调用委派