【问题标题】:jQuery Submenu not disappearing unless it is hovered once除非悬停一次,否则 jQuery 子菜单不会消失
【发布时间】:2014-08-30 00:40:17
【问题描述】:

这里是html代码:

<div class="main-nav main-nav-default">
<div class="container">
    <div class="main-nav-logo">
        <a class="logo-color" href="index.html">Centaur <span class="brand">Research</span></a>
    </div>

    <div class="main-nav-links">
        <ul id="responsive">
            <li><a href="index.html">Home</a></li>
            <li><a href="about.html">About</a></li>
            <li class="dropdown"><a href="services.html">Services</a>
                <ul class="dropdown-lists">
                    <li><a href="research_sector.html">Research Sector</a></li>
                    <li><a href="http://online.c-research.in/">Online Research</a></li>
                    <li><a href="http://travel.c-research.in/">Travel Research</a></li>
                </ul>
            </li>
            <li class="dropdown"><a href="http://panel.c-research.in">Panel</a>
                <ul class="dropdown-lists">
                    <li><a href="http://focusgroup.c-research.in/">Discussion Group</a></li>
                </ul>
            </li>
            <li><a href="contact.html">Contact</a></li>
            <li class="dropdown"><a href="#">Language</a>
                <ul class="dropdown-lists">
                    <li><div class="translate"><div id="google_translate_element"></div></div> <script type="text/javascript">
                        function googleTranslateElementInit() {
                            new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, gaTrack: true, gaId: 'UA-38654447-1'}, 'google_translate_element');
                        }
                    </script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script></li>
                </ul>
            </li>
            </li>
        </ul>
    </div>
</div>

这里是 jQuery:

$(".dropdown-lists").hide();
    $(".dropdown").mouseenter(function(){
        $(this).find(".dropdown-lists").slideDown();
        $(".dropdown-lists").mouseleave(function(){
        $(this).slideUp();
        });
    });

基本上,当我将鼠标悬停在下拉菜单上时,它可以完美地工作,但它不会消失,除非我将鼠标悬停在 .dropdown-lists 类的子菜单上。如果我将鼠标悬停在 .dropdown 类上并导航离开而不悬停在子菜单上,子菜单不会消失。除非我将它至少悬停一次,否则它会保持静止。

我知道我的 jQuery 只允许在悬停一次时向上滑动菜单,我想知道即使我不将鼠标悬停在子菜单上也能工作的代码组合。

另外这里是下拉 CSS 代码,我怀疑子菜单不是父 main-nav-link 或#responsive 的子元素:

.main-nav-links { padding: 20px 0px 20px 0px; } #responsive { text-align: right; } #responsive li { position: relative; text-align: right; display: inline-block; } #responsive li > a { font-family: "Open Sans"; font-weight: 700; padding-right: 10px; font-size: 14px; letter-spacing: 2px; text-transform: uppercase; text-decoration: none; color: #fff; -webkit-transition: all 0.3s; -moz-transition: all 0.3s; -ms-transition: all 0.3s; -o-transition: all 0.3s; transition: all 0.3s; } @media (max-width: 992px){ #responsive li > a { font-size: 12px; } } #responsive li > a:hover { color: #19B5FE; } .dropdown-lists { text-align: center; } #responsive li .dropdown-lists li { list-style: none; margin-left: -29px!important; border-top: 1px solid rgba(60,60,60,0.9); padding: 10px 0px 10px 0px; } #responsive li .dropdown-lists li > a { color: rgba(204,204,204,0.8); font-size: 12px; font-weight: 400; } #responsive li .dropdown-lists li > a:hover{ color: #fff; } #responsive li .dropdown-lists { width: 200px; position: absolute; top: 200%; background: rgba(51, 51, 51, 0.8); }

【问题讨论】:

  • 你是不是在 mouseenter 事件里面绑定了 mouseleave 事件?

标签: javascript jquery css drop-down-menu hover


【解决方案1】:

像这样更新你的 jquery。

$(".dropdown-lists").hide();
$(".dropdown").mouseenter(function(){
    $(this).find(".dropdown-lists").slideDown();

    }).mouseleave(function(){
    $(this).find(".dropdown-lists").slideUp();
});

DEMO

编辑:

由于您在下拉 CSS 中使用了 top 属性,您最新小提琴中的下拉菜单会出现其他问题。更新 CSS 中的以下类。

#responsive li .dropdown-lists {
width: 200px;
position: absolute;
top: 100%; /* It was 200% earlier */
background: rgba(51, 51, 51, 0.8);
}
.dropdown
{
 height:40px;
} 

Updated DEMO

【讨论】:

  • 当我将鼠标悬停在.dropdown 之外时,子菜单会直接关闭,我什至无法单击下拉菜单的链接。从字面上看,它只是直接打开和关闭,无论我是否将鼠标悬停在 .dropdown-lists 类上,都无需等待。
  • 哪个浏览器?我正在使用 chrome,我可以毫无问题地单击链接。可能是彼此非常接近。所以你有这种感觉。只需在它们之间添加一些填充,然后您就可以清楚地测试它。
  • Chrome..我已经添加了CSS并更新了描述:您也可以在这里查看功能代码:link
  • 我现在已经检查过了,使用 100% 的最高值确实可以解决问题,但是子菜单在导航栏上方,我的意思是它的重叠。我的导航栏高度为 60 像素,所以当我应用 100% 的顶部值时,子菜单直接从父菜单开始,而不是从导航栏主菜单下方开始。如果我把 margin-top .. 像以前一样再次发生同样的事情。跨度>
  • 而不是使用边距。
猜你喜欢
  • 2011-02-06
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2017-01-02
相关资源
最近更新 更多