我正在尝试使用 events-map 属性jQuery.off()
来禁用事件,但它似乎并没有禁用事件。
根据 jQuery 文档off()
,应该使用事件映射的键并忽略值。
这是一个例子:http: //jsfiddle.net/tNBMM/
选中复选框应该做一个简单的悬停效果。取消选中它会调用该off()
函数,该函数(如我所见)应该禁用事件,但不会。
我在这里做错了什么?
我正在尝试使用 events-map 属性jQuery.off()
来禁用事件,但它似乎并没有禁用事件。
根据 jQuery 文档off()
,应该使用事件映射的键并忽略值。
这是一个例子:http: //jsfiddle.net/tNBMM/
选中复选框应该做一个简单的悬停效果。取消选中它会调用该off()
函数,该函数(如我所见)应该禁用事件,但不会。
我在这里做错了什么?
off()
on()
需要与用于禁用它的完全相同的函数引用。在您当前的版本中,每次单击复选框时,您都会在技术上创建新的mouseenter
和处理程序。mouseleave
这是一个更新版本,它使用和 相同的函数参考on()
,off()
按预期工作:http: //jsfiddle.net/tNBMM/2/
编辑:为了任何未来的访问者,这里是工作代码:
var enter = function() { $('#thing').css('background-color', 'red'); },
leave = function() { $('#thing').css('background-color', 'white'); };
$('#show').click( function() {
var show = $(this).is(':checked');
$('#thing')[show ? 'on' : 'off']({
mouseenter: enter,
mouseleave: leave
});
});