jquery转“on”和“off”事件处理程序
如何将“off”指令应用于命名处理程序?
前
var $btn = $("#theBtn"); var namedHandler = $btn.on("click", function() { //do something //then turn off })
我会这样把它关掉吗?
$btn.off("click");
或者我可以做其他事情,现在它存储在变量中吗?
namedHandler.off("click");
要么
namedHandler.off();
等等
任何指针都非常赞赏。
对jQuery对象的相同引用将在$btn
和 namedHandler
。 两者都返回对同一事物的引用,因此赋值分配相同的东西。
您可以使用任一方法将其off()
。
可能更适合您的示例的是命名空间事件 ,因此off('click', ...)
不会解除所有 click
事件的绑定。
你也可以这样做
function handleClick(event) { // code } $('#btn').on('click', handleClick); $('#btn').off('click', handleClick);
一些有用的例子只在这里开/关。
除了@alex和@WereWolf所说的,我经常觉得这很有用:
对于单用事件处理程序,您可以使用.one()
而不是.on()
后跟.on()
.off()
$( "#foo" ).one( "click", function() { alert( "This will be displayed only once." ); });
您可以为处理程序定义一个函数,并将其传递给.off()
以禁用该处理程序,并将.on()
重新启用它。
该文档提供了实现此目的的示例
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..."); });