案例是:当我将鼠标悬停在链接上时,某些任务应该发生,当我离开区域/鼠标离开时,链接的悬停应该保持禁用状态1秒钟再次工作。
DEMO PLNKR:
http://plnkr.co/edit/m6SnDzuo2MA5hoYUEoPc?p=preview
以下是我的方法:
$("a").hover(function (event) {
event.preventDefault();
alert('hovered');
}, function () {
$("a").unbind('mouseenter mouseleave');
setTimeout(function () {
$("a").bind('mouseenter mouseleave');
}, 1000);
});
因此,每当发生mouseleave事件时,我都会解除绑定mouseenter
和mouseleave
,然后解除绑定setTimeout
并重新绑定它们。
所以,现在它解除了很好的解决方案,但是一秒钟后事件就不会重新绑定了。
如果我在这里做错了什么,请帮忙。
答案 0 :(得分:2)
首先绑定到hover
,当光标离开时,您将unbind
mouseenter
和mouseleave
。但是你没有为它分配任何功能。你真的想重新分配给之前的hover
- 事件吗?
在您给出的示例中,未设置handler
。
来自docs。
eventType
类型:String包含一个或多个DOM事件类型的字符串,例如“click”或“submit”或自定义事件名称。
<强>处理程序强>
类型:Function(Event eventObject)每次触发事件时执行的函数。
function onHover(){
alert('hovered');
}
function onHoverLeft(){
console.log('onHoverLeft called');
$("a").off('mouseenter mouseleave');
setTimeout(function () {
console.log('setTimeout is done. Will rebind hover now.');
$("a").hover(onHover, onHoverLeft);
}, 2000);
}
$("a").hover(onHover, onHoverLeft);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Foo</a>