我如何应用" off"指定处理程序的指令?
离
var $btn = $("#theBtn");
var namedHandler = $btn.on("click", function() {
//do something
//then turn off
})
我会把它关掉吗
$btn.off("click");
或者现在可以将其存储在变量中吗?
namedHandler.off("click");
或
namedHandler.off();
等
任何指针都非常赞赏。
答案 0 :(得分:12)
你也可以这样做
function handleClick(event)
{
// code
}
$('#btn').on('click', handleClick);
$('#btn').off('click', handleClick);
仅关于开/关here的一些有用示例。
答案 1 :(得分:11)
jQuery对象的相同引用将在$btn
和 namedHandler
中。两者都返回对同一事物的引用,因此赋值分配相同的东西。
您可以使用任一方法将其转为off()
。
可能更适合您的示例的是namespacing your event,因此off('click', ...)
不会取消绑定所有 click
个事件。
答案 2 :(得分:8)
除了@alex& @WereWolf说,我经常觉得这很有用:
对于单次使用的事件处理程序,您可以使用.one()
代替.on()
,然后使用.off()
$( "#foo" ).one( "click", function() {
alert( "This will be displayed only once." );
});
答案 3 :(得分:2)
您可以为处理程序定义一个函数,并将其传递给.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...");
});