首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有jquery的情况下实现悬浮意图?

问如何在没有jquery的情况下实现悬浮意图?
EN

Stack Overflow用户
提问于 2012-07-06 00:19:04
回答 2查看 2.7K关注 0票数 2

我不想在我的所有页面中都包含jquery,但我在一个部分的悬停上添加了一个全局的‘下拉’菜单,但我不希望它立即出现,因为当它只是移动鼠标时会很烦人。通常我会使用jquery和hoverintent来做这件事,但这次不会。

我想我可以在onmouseover上为这个区域设置一个超时,但不确定它是否就这么简单(比如,当鼠标移动时,它不是会像成千上万次一样触发吗?)

当前代码是这样的.

代码语言:javascript
复制
<div onMouseOver="showCart();">Hover here!</div>

那么,将其更改为此操作是否可行?:

代码语言:javascript
复制
<div onMouseOver="setTimeout(showCart, 50);">Hover here!</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-06 01:48:37

这里有一个非常简单的Vanilla DOM方法。这需要一个id为target的元素(用于菜单项)和一个id为'dropdown‘的元素。

注意,这使用了全局老式的'on‘处理程序,这可能不是最佳实践(您应该使用addEventListener),但是,我认为这会使代码更具可读性:)

我还设置了一个jsFiddle here

代码语言:javascript
复制
var target = document.getElementById('target');
var dropdown = document.getElementById('dropdown');
var curEl;

document.onmousemove = function(e) {
    e = e || window.event;
    curEl = e.target || e.srcElement;
}

target.onmouseover = function(e) {
    setTimeout(function() {
        if (curEl === target || curEl === dropdown) {
            dropdown.style.display = "block";
        } else {
            dropdown.style.display = "none";
        }
    }, 300);
}

target.onmouseout = dropdown.onmouseout = function() {
    setTimeout(function() {
        if (curEl !== target && curEl !== dropdown) {
            dropdown.style.display = "none";
        }
    }, 300);
}
票数 2
EN

Stack Overflow用户

发布于 2012-07-06 01:28:09

嗯,我最初的尝试失败得很糟糕,但后来它就像这样工作了……

代码语言:javascript
复制
<div onmouseover="window.mycarthoverin = 1; setTimeout(showCart, 100);" onmouseout="window.mycarthoverin = 0;">Hover here!</div>

然后在showCart内部..。

代码语言:javascript
复制
if (window.mycarthoverin == 1) {
  ...
}

有没有人看到了我可能没有意识到的这种方法的问题?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11348491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档