如何在 jQuery 中解除“悬停”的绑定?
这不起作用:
$(this).unbind('hover');
如何在 jQuery 中解除“悬停”的绑定?
这不起作用:
$(this).unbind('hover');
$(this).unbind('mouseenter').unbind('mouseleave')
或者更简洁(感谢@Chad Grant):
$(this).unbind('mouseenter mouseleave')
实际上,jQuery 文档有一个比上面显示的链接示例更简单的方法(尽管它们可以正常工作):
$("#myElement").unbind('mouseenter mouseleave');
从 jQuery 1.7 开始,您还可以使用$.on()
和$.off()
用于事件绑定,因此要取消悬停事件的绑定,您将使用更简单和更整洁的:
$('#myElement').off('hover');
伪事件名称“hover”用作“mouseenter mouseleave”的简写,但在早期的 jQuery 版本中处理方式不同;要求您明确删除每个文字事件名称。使用$.off()
now 允许您使用相同的速记删除两个鼠标事件。
2016 年编辑:
仍然是一个受欢迎的问题,因此值得关注@Dennis98在下面评论中的观点,即在 jQuery 1.9+ 中,“悬停”事件已被弃用,而支持标准的“mouseenter mouseleave”调用。所以你的事件绑定声明现在应该是这样的:
$('#myElement').off('mouseenter mouseleave');
单独取消绑定mouseenter
和mouseleave
事件或取消绑定元素上的所有事件。
$(this).unbind('mouseenter').unbind('mouseleave');
或者
$(this).unbind(); // assuming you have no other handlers you want to keep
unbind() 不适用于硬编码的内联事件。
因此,例如,如果您想从 解除鼠标悬停事件的绑定
<div id="some_div" onmouseover="do_something();">
,我发现这$('#some_div').attr('onmouseover','')
是实现它的一种快速而肮脏的方法。
另一个解决方案是.die()用于附加.live() 的事件。
前任。:
// attach click event for <a> tags
$('a').live('click', function(){});
// deattach click event from <a> tags
$('a').die('click');
你可以在这里找到一个很好的参考:探索 jQuery .live() 和 .die()
(对不起我的英语:>)