1

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

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

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

选中复选框应该做一个简单的悬停效果。取消选中它会调用该off()函数,该函数(如我所见)应该禁用事件,但不会。

我在这里做错了什么?

4

1 回答 1

4

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
    });
});​
于 2012-05-16T12:51:14.710 回答