捕获事件悬停并停留而不是经过

发布于 2024-12-08 21:08:45 字数 65 浏览 0 评论 0原文

有没有办法捕获鼠标悬停并停留(一段时间)事件,但如果鼠标经过元素则不能捕获。因此,仅当您悬停并停留时才会触发该事件。

Is there a way to capture a mouse hover and stay (for a while) event but not if the mouse is passing by the element. So the event will be fired only when you hover and stay.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

⒈起吃苦の倖褔 2024-12-15 21:08:45

您可以使用 setTimeout 在执行任何代码之前创建延迟您需要 clearTimeout 取消计时器当鼠标离开元素时:

var timer;
$("#example").mouseover(function() {
    timer = setTimeout(function() {
       console.log("time passed");
    }, 1000); 
}).mouseout(function() {
    clearTimeout(timer);  
});

这是上述内容的工作示例

You can use setTimeout to create a delay before executing whatever code you need to, and clearTimeout to cancel the timer when the mouse leaves the element:

var timer;
$("#example").mouseover(function() {
    timer = setTimeout(function() {
       console.log("time passed");
    }, 1000); 
}).mouseout(function() {
    clearTimeout(timer);  
});

Here's a working example of the above.

执着的年纪 2024-12-15 21:08:45

是的,有一个插件。我几乎在所有悬停代码中都使用它:

Yes, a plugin exists for it. I use it in almost all of my hover code:

眼眸印温柔 2024-12-15 21:08:45

有专门为此设计的 hoverIntent 插件。

There is the hoverIntent plugin designed just for this.

温馨耳语 2024-12-15 21:08:45

考虑使用 JavaScript 计时器,当鼠标悬停时开始计数。
当鼠标离开时,停止计时器。计时器可以触发一个事件,如果鼠标从未发生过关闭/离开,计时器将触发您的悬停/停留功能。

可能 JQuery 插件也适用于此。

Look into using a javascript timer, starts counting when mouse over.
When the mouse leaves, stop the timer. The timer can trigger an event, if the mouse off/leave never occurs, the timer will set off your hover/stay function.

Probably JQuery pluggins for this as well.

迷途知返 2024-12-15 21:08:45

在鼠标输入时,计时器将在 500 毫秒后启动,您的函数将被调用
如果用户在延迟之前离开,计时器将被清除,因此该函数不会被调用。

yourElement.live({
    mouseenter: function() {
        t=setTimeout(function(){ yourFunction() }, 500); 
    }, mouseleave: function() {
        clearTimeout(t);
    }
});

希望这有帮助:)

On mouseenter a timer will start after 500ms yourFunction will be call
If the user leave before your delay, the timer will be cleared, so the function won't be called.

yourElement.live({
    mouseenter: function() {
        t=setTimeout(function(){ yourFunction() }, 500); 
    }, mouseleave: function() {
        clearTimeout(t);
    }
});

Hope this help :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文