2012-03-29 30 views
17

如何將「off」指令應用於指定的處理程序?jquery打開「on」和「off」事件處理程序

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

我會關掉它這樣

$btn.off("click"); 

或者我可以做別的事情,現在它被存儲在一個變量?

namedHandler.off("click"); 

namedHandler.off(); 

任何指針讚賞。

回答

11

相同的參考jQuery對象將在$btnnamedHandler。兩者都返回對同一事物的引用,以便賦值指定相同的內容。

你可以用任何一種方法把它變成off()

什麼可能更適合您的例子是namespacing your event,所以off('click', ...)不會解除綁定所有click事件。

+0

這幾乎是我想知道的。命名處理程序只是存儲jquery對象而不是某些事件處理邏輯。很好 – Chin 2012-03-29 02:34:07

2

您可以爲您的處理程序定義一個函數,並將其傳遞給.off()以禁用該處理程序,並且.on()將其重新啓用。

文檔提供實施例以實現這一

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

function aClick() { 
    $("div").show().fadeOut("slow"); 
} 
$("#bind").click(function() { 
    $("body").on("click", "#theone", aClick) 
    .find("#theone").text("Can Click!"); 
}); 
$("#unbind").click(function() { 
    $("body").off("click", "#theone", aClick) 
    .find("#theone").text("Does nothing..."); 
}); 
+1

是的,在那裏的文檔。 – 2012-03-29 02:12:15

11

你也可以做到只有開/關here

function handleClick(event) 
{ 
    // code 
} 

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

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

一些有用的例子。

8

除了什麼@alex & @WereWolf說,我經常發現這個有用:

爲一次性使用的事件處理程序,您可以使用.one()代替.on()其次.off()

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

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

+0

這不是一個評論,而不是問題的答案。 – 2015-03-16 14:30:25

相關問題