jQuery off()不使用事件映射
我试图使用jQuery.off中的events map属性来禁用事件,但它似乎没有禁用事件 根据jQuery文档,off应该使用事件映射的键并忽略这些值 下面是一个例子: 选中该复选框将产生简单的悬停效果。取消选中它会调用off函数,我认为它应该禁用事件,但不会 我在这里做错了什么?off需要与on完全相同的函数引用才能禁用它。在当前版本中,每次单击复选框时,您都在技术上创建新的mouseenter和mouseleave处理程序。以下是一个更新版本,它使用相同的函数引用进行打开和关闭,并按预期工作: 编辑:为了方便将来的访问者,以下是工作代码:jQuery off()不使用事件映射,jquery,events,binding,map,Jquery,Events,Binding,Map,我试图使用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的一个小实现——工作得很完美,并且有一个可靠的解释。非常感谢。