我希望能够在以下场景中检测鼠标是否仍然在元素上:
如何实现#2?
谢谢。
答案 0 :(得分:37)
这似乎有效(http://jsbin.com/uvoqe)
$("#hello").hover( function () {
$(this).data('timeout', setTimeout( function () {
alert('You have been hovering this element for 1000ms');
}, 1000));
}, function () {
clearTimeout($(this).data('timeout'));
});
答案 1 :(得分:15)
看一下jQuery的hoverIntent插件。它为您提供了一个新的事件处理程序,只有当您将元素悬停在元素上一段时间后才会触发它。通过调整其选项,您应该能够让它完全按照您的意愿完成。
答案 2 :(得分:10)
只需使用一个标志告诉您鼠标是否在它上面。
var mouseover = false;
$('.thing').mouseenter(function(){
mouseover = true;
}).mouseleave(function(){
mouseover = false;
});
答案 3 :(得分:2)
这是一种方式:
在元素上设置.hover()时,可以向其传递2个函数。当鼠标移出元素时,第一个将触发,当鼠标移出时,第二个将触发。
第一个函数可以设置currentElementId
(或其他一些标志),第二个函数将清除它。这样,您唯一需要做的就是检查currentElementId
是否为空。
答案 4 :(得分:1)
您可以在设定的时间后使用setTimeout( 'sleep', sleep_time )
来调用函数。
将事件处理程序分配给onmouseover和onmouseout。
这些处理程序修改标志以检查鼠标是否仍在元素上。
在睡眠功能内部,您可以检查标志,然后将其返回。
答案 5 :(得分:1)
我使用超链接显示div
,然后在hover
事件中设置了此属性的超时属性,并在我转到div
后立即清除超时并启动使用div
的{{1}}函数淡出hover
。我希望这会对你有所帮助。
div