jQuery off() 不适用于事件映射

标签 jquery events binding dictionary

我尝试使用 jQuery.off() 中的 events-map 属性来禁用事件,但它似乎并没有禁用事件。

根据 jQuery 文档 off() 应该使用事件映射的键并忽略值。

这是一个例子: http://jsfiddle.net/tNBMM/

选中该复选框应该会产生简单的悬停效果。取消选中它会调用 off() 函数,该函数(据我所知)应该禁用事件,但事实并非如此。

我在这里做错了什么?

最佳答案

off() 需要与 on() 使用的函数引用完全相同才能禁用它。在当前版本中,从技术上讲,每次单击复选框时都会创建新的 mouseentermouseleave 处理程序。这是一个更新版本,它对 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/

相关文章:

javascript - 即使在页面重新加载后如何保留添加行及其值

javascript - Phonegap - javascript longpress

javascript - 根据单击的 HTML 类运行 Javascript

javascript - 无法使用 Object.assign 获取文档按键事件

wpf - LayoutTransform 自定义样式 wpf

WPF 命令绑定(bind) : CanExecute parameter

javascript - jQuery - 验证结果与 JS Fiddle 演示不同

c# - 使用 "new EventHandler<T>"和不使用 new EventHandler<T> 的接线事件之间的区别?

vba - Excel VBA : Deselect a cell

c# - WPF 绑定(bind)以控制可见性 "Numbers are not valid enumeration Values"