首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript if语句通过OnMouseOut防止div消失

问使用Javascript if语句通过OnMouseOut防止div消失
EN

Stack Overflow用户
提问于 2011-08-05 12:43:55
回答 1查看 778关注 0票数 0

在我正在处理的这个导航栏中,当你将鼠标放在一个按钮上时,它会出现一个div,当你把鼠标移出按钮时,它就会消失。问题是,当我将鼠标移出按钮并向下移动到出现的div时,我不希望div消失,因为它包含链接。我希望它只在我用鼠标滑出按钮(而不是移到显示的div上)和滑出显示的div时消失。

为此,我使用了OnMouseOver和OnMouseOut函数。

如果我在else语句中使用允许我执行所需操作的if语句怎么办(如上所述)?

javascript:

代码语言:javascript
复制
function showlayer(layer){
var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none" || myLayer.style.display==""){
myLayer.style.display="block";
} else { 
myLayer.style.display="none";
}
}

HTML:

代码语言:javascript
复制
<div id="topBar">
    <div id="navContainer">
    (...)
    <a href="#" class="nav" onmouseover="javascript:showlayer('commLinks')" onmouseout="javascript:showlayer('commLinks')"><div class="communityBtn">Community</div></a>
代码语言:javascript
复制
<div id="subnavLayer">
<div class="commHidden" id="commLinks">
    <div class="commLinksText">Booster Club</div>
    <div class="commLinksText">PTO</div>
    <div class="commLinksText">Fine Arts</div>
    <div class="commLinksText">City of West Branch</div>
</div>

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-05 13:11:13

我认为人们通常通过将弹出导航作为标题的子节点来完成这类事情。这样,当用户将鼠标移到弹出窗口的选项上时,从技术上讲,鼠标仍然在标题内,并且不会触发mouseout事件。

代码语言:javascript
复制
<div id="topBar">
    <div id="navContainer">
    <div class="nav" onmouseover="javascript:showlayer('commLinks')" onmouseout="javascript:showlayer('commLinks')">
        <div class="communityBtn">Community</div>
        <div id="subnavLayer" style="position:absolute">
            <div class="commHidden" id="commLinks">
                <div class="commLinksText">Booster Club</div>
                <div class="commLinksText">PTO</div>
                <div class="commLinksText">Fine Arts</div>
                <div class="commLinksText">City of West Branch</div>
            </div>
        </div>
    </div>
</div>

以这种方式构造HTML的最好的部分是,你实际上可以得到一个弹出式窗口,只需要CSS,而不需要任何脚本。基本上,你会有一个类似这样的样式:

代码语言:javascript
复制
#subnavLayer {
    display:none;
}
.nav:hover #subnavLayer {
    display:block;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6951541

复制
相关文章

相似问题

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