我想知道在元素(例如 div class="myiv")悬停后是否有一个函数要运行,并每 X 毫秒检查它是否仍然悬停,如果是,则运行另一个函数。
编辑:这对我有用: http://jsfiddle.net/z8yaB/
最佳答案
对于简单界面中的大多数用途,您可以使用 jquery 的悬停函数,并且如果鼠标悬停,则只需将 bool 值存储在某处。然后您可以使用一个简单的 setInterval 循环来检查每个毫秒的状态。您还可以在第一个评论中看到链接副本中的这个答案(编辑:现在在此处的其他答案中)。
但也有一些情况,特别是当物体在鼠标和物体“之间”移动时,悬停时会产生错误警报。
对于这些情况,我创建了这个函数来检查当 jquery 调用我的处理程序时事件是否确实悬停在元素上:
var bubbling = {};
bubbling.eventIsOver = function(event, o) {
if ((!o) || o==null) return false;
var pos = o.offset();
var ex = event.pageX;
var ey = event.pageY;
if (
ex>=pos.left
&& ex<=pos.left+o.width()
&& ey>=pos.top
&& ey<=pos.top+o.height()
) {
return true;
}
return false;
};
当我收到 mouseout 事件时,我使用这个函数来检查鼠标是否真的离开了:
$('body').delegate(' myselector ', 'mouseenter', function(event) {
bubbling.bubbleTarget = $(this);
// store somewhere that the mouse is in the object
}).live('mouseout', function(event) {
if (bubbling.eventIsOver(event, bubbling.bubbleTarget)) return;
// store somewhere that the mouse leaved the object
});
关于javascript - 每 10 毫秒检查鼠标是否仍在元素上悬停的函数(如果是,则运行函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10933828/