在jQuery中,有没有办法只绑定一次点击?

Chr*_*nry 8 javascript jquery

我有一个ajax应用程序,将在每次交互时运行函数.我希望每次都能运行我的设置功能,所以我的所有设置代码都保持封装状态.但是,绑定元素不止一次意味着处理程序将运行多次,这显然是不可取的.是否有一种优雅的方式在jQuery中多次调用一个元素上的bind而不会多次调用该处理程序?

Che*_*try 12

one像Tom说的用户jQuery 函数,但每次绑定之前解除处理程序的绑定.将事件处理程序分配给变量比使用匿名函数更有帮助.

 var handler = function(e) { // stuff };

 $('#element').unbind('click', handler).one('click', handler);

 //elsewhere
 $('#element').unbind('click', handler).one('click', handler);
Run Code Online (Sandbox Code Playgroud)

您还.unbind('click')可以删除附加到元素的所有单击处理程序.


Tom*_*tel 8

您可以document使用该one()函数附加事件:

$(document).one('click', function(e) {
    // initialization here
});
Run Code Online (Sandbox Code Playgroud)

运行后,将再次删除此事件处理程序,以便它不会再次运行.但是,如果您需要在其他元素的click事件之前运行初始化,我们将不得不考虑其他事情.然后使用mousedown而不是click可能工作,因为在click事件之前触发了mousedown事件.

  • 这只能部分解决他的问题.多次使用"one"附加事件仍然会多次运行,但每次运行一次. (4认同)