jQuery off()不使用事件映射

jQuery off()不使用事件映射,jquery,events,binding,map,Jquery,Events,Binding,Map,我试图使用jQuery.off中的events map属性来禁用事件,但它似乎没有禁用事件 根据jQuery文档,off应该使用事件映射的键并忽略这些值 下面是一个例子: 选中该复选框将产生简单的悬停效果。取消选中它会调用off函数,我认为它应该禁用事件,但不会 我在这里做错了什么?off需要与on完全相同的函数引用才能禁用它。在当前版本中,每次单击复选框时,您都在技术上创建新的mouseenter和mouseleave处理程序。以下是一个更新版本,它使用相同的函数引用进行打开和关闭,并按预期

我试图使用jQuery.off中的events map属性来禁用事件,但它似乎没有禁用事件

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

下面是一个例子:

选中该复选框将产生简单的悬停效果。取消选中它会调用off函数,我认为它应该禁用事件,但不会

我在这里做错了什么?

off需要与on完全相同的函数引用才能禁用它。在当前版本中,每次单击复选框时,您都在技术上创建新的mouseenter和mouseleave处理程序。以下是一个更新版本,它使用相同的函数引用进行打开和关闭,并按预期工作:

编辑:为了方便将来的访问者,以下是工作代码:

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
    });
});​
off需要与on完全相同的函数引用才能禁用它。在当前版本中,每次单击复选框时,您都在技术上创建新的mouseenter和mouseleave处理程序。以下是一个更新版本,它使用相同的函数引用进行打开和关闭,并按预期工作:

编辑:为了方便将来的访问者,以下是工作代码:

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
    });
});​

小提琴对我不起作用,取消复选框后悬停效果仍然存在sDoh-我有正确的解释,但把实现搞砸了:。尝试更新的链接代码示例(也已更新)。关键是将mouseenter和mouseleave处理程序定义移到click处理程序之外-这样,在打开和关闭中使用相同的函数引用。我只是傻了,没有把它们移动得足够远:在函数中使用$this的一个小实现——工作得很完美,并且有一个可靠的解释。非常感谢。小提琴对我不起作用,取消复选框后悬停效果仍然存在sDoh-我有正确的解释,但把实现搞砸了:。尝试更新的链接代码示例(也已更新)。关键是将mouseenter和mouseleave处理程序定义移到click处理程序之外-这样,在打开和关闭中使用相同的函数引用。我只是傻了,没有把它们移动得足够远:在函数中使用$this的一个小实现——工作得很完美,并且有一个可靠的解释。非常感谢。