我尝试使用 jQuery.off()
中的 events-map 属性来禁用事件,但它似乎并没有禁用事件。
根据 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
});
});
关于jQuery off() 不适用于事件映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618897/