我正在使用此代码重复事件,故意应该运行多次:
$('selector').on('change', myFunction);
然后我做了一些谷歌搜索,我看到我可以/应该做
$('selector').off('change', myFunction).on('change', myFunction);
首先取消绑定,这是有道理的,但我仍然遇到了以倍数绑定结束的相同问题。
然后奇怪的是我改变了我的代码,在off()
部分的函数名称之后包含(),并且它有效!
$('selector').off('change', myFunction()).on('change', myFunction);
所以,我的问题是:我在myFunction()
部分使用myFunction
代替off()
做得对吗?
答案 0 :(得分:2)
没有off
重载接受您调用它的参数集。您的“工作”代码与
$('selector').off('change').on('change', myFunction);
在myFunction
中执行.off('change', myFunction())
会产生不必要的副作用。
答案 1 :(得分:0)
只需在页面加载时委派一次事件,并且不要添加多个侦听器
$(document).on('change','selector', myFunction);
我使用document
但您可以将其移动到页面中更接近的永久资产,该页面是元素的祖先
答案 2 :(得分:0)
经过研究,我使用
正常工作$('selector').off('.myNamespace').on('change.myNamespace', myFunction);
这样做我不会解除任何其他事件的束缚,我只是解开我真正需要的那个。
PS:我仍然不知道为什么$('selector').off('change', myFunction)
不起作用,但我会继续前进。
感谢。