javascript - 每 10 毫秒检查鼠标是否仍在元素上悬停的函数(如果是,则运行函数)

标签 javascript jquery

我想知道在元素(例如 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/

相关文章:

javascript - 如何在 React Native 中模糊文本

javascript - 如何在angularjs中使用通配符搜索?

javascript - 基于屏幕调整大小(而不是页面刷新)进行检测

jquery - 如何将 jquery 与 asp.net ajax 结合使用

javascript - 使用 JavaScript 对图像进行 Div

jquery - Yii2:如何打开 GridView 的列标题?

javascript - 将传单功能中的一些圆形标记放在前面

javascript - jQuery:如何设置一个带有 Preventdefault 的 "a"标签和一个没有的标签?

javascript - 将文本框值存储在临时表中

javascript - Google map v3 地理编码