jquery转"on"和"off"事件处理程序

Chi*_*hin 19 jquery events

如何将"off"指令应用于命名处理程序?

var $btn = $("#theBtn");
var namedHandler = $btn.on("click", function() {
//do something
//then turn off
})
Run Code Online (Sandbox Code Playgroud)

我会这样把它关掉吗?

$btn.off("click");
Run Code Online (Sandbox Code Playgroud)

或者我可以做其他事情现在存储在变量中?

namedHandler.off("click");
Run Code Online (Sandbox Code Playgroud)

要么

namedHandler.off();
Run Code Online (Sandbox Code Playgroud)

等等

任何指针都非常赞赏.

The*_*pha 12

你也可以这样做

function handleClick(event) 
{
    // code
}

$('#btn').on('click', handleClick);

$('#btn').off('click', handleClick);
Run Code Online (Sandbox Code Playgroud)

一些有用的例子只在这里开/关.


ale*_*lex 11

对jQuery对象的相同引用将在$btn 和中 namedHandler.两者都返回对同一事物的引用,因此赋值分配相同的东西.

你可以off()用任何一种方法来转动它.

可能更适合您的示例的是命名空间事件,因此off('click', ...)不会解除所有 click事件的绑定.


use*_*ser 8

除了@alex和@WereWolf所说的,我经常觉得这很有用:

对于单次使用事件处理程序,您可以使用.one()而不是.on()后跟.off()

$( "#foo" ).one( "click", function() {
  alert( "This will be displayed only once." );
});
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/one/