如何防止使用jQuery进行多事件调用(“更改”)

时间:2018-01-23 22:34:02

标签: javascript jquery events onchange

我正在使用此代码重复事件,故意应该运行多次:

$('selector').on('change', myFunction);

然后我做了一些谷歌搜索,我看到我可以/应该做

$('selector').off('change', myFunction).on('change', myFunction);

首先取消绑定,这是有道理的,但我仍然遇到了以倍数绑定结束的相同问题。

然后奇怪的是我改变了我的代码,在off()部分的函数名称之后包含(),并且它有效!

$('selector').off('change', myFunction()).on('change', myFunction);

所以,我的问题是:我在myFunction()部分使用myFunction代替off()做得对吗?

3 个答案:

答案 0 :(得分:2)

http://api.jquery.com/off/

没有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)不起作用,但我会继续前进。

感谢。