【发布时间】:2010-09-23 23:03:56
【问题描述】:
页面加载完成后,我调用一个函数,将悬停事件置于 $('a.tooltip') 上。当我想取消绑定此事件时,我会执行以下操作:
$('a.tooltip').unbind('mouseover mouseout');
这行得通!但是,当我想重新绑定悬停事件并再次调用在文档就绪时首次加载的函数时,它不会重新绑定悬停助手。如何重新绑定?
谢谢,
冰
【问题讨论】:
页面加载完成后,我调用一个函数,将悬停事件置于 $('a.tooltip') 上。当我想取消绑定此事件时,我会执行以下操作:
$('a.tooltip').unbind('mouseover mouseout');
这行得通!但是,当我想重新绑定悬停事件并再次调用在文档就绪时首次加载的函数时,它不会重新绑定悬停助手。如何重新绑定?
谢谢,
冰
【问题讨论】:
您确定解绑工作正常吗?根据我的经验, .hover() 确实可以正确重新绑定,但我不得不使用这种取消绑定语法:
$(this).unbind('mouseenter').unbind('mouseleave');
当我尝试将这两个事件放入一个 unbind() 时,它只解开了其中一个。
我想知道这是否发生在你身上? (或者如果mouseover 与mouseenter 等的选择很重要?)
根据quirksmode.org、mouseenter 和mouseleave 是特定于IE 的事件,但正如Jimmy 在cmets 中指出的那样,jQuery 也为其他浏览器实现了它们。
【讨论】:
我发现当我使用 bind 方法时,事情可能有点繁琐。您可能想尝试使用 hover(over, out) 功能:
$(this).hover(
function() {
if (okayToHover) { dowhatever; }
},
function() {
if (okayToUnhover) { undowhatever; }
});
我知道这似乎有点迂回,但我发现悬停功能让我可以更好地控制正在发生的事情,而且无论出于何种原因,它似乎都能更好地工作。不过,这只是我的经验……
【讨论】: