javascript - jquery 下拉菜单在悬停时重复打开

标签 javascript jquery

我在使用 jquery 菜单时遇到了一些问题。我工作得很好,但如果你将鼠标悬停在按钮上 3 或 4 次,菜单将重复展开 3 或 4 次,你所能做的就是等待它退出。有人可以告诉我如何阻止这个吗?这是我正在使用的 JavaScript:

<script type="text/javascript">
$(function () {
      $('#dropMenu .level1 .submenu.submenu').hover(function() {
$(this).find('ul.level2,.level3 li,.level4 li,.level5 li,.level6 li').stop(true, true).hide(1000);
$(this).find('ul.level2,.level3 li,.level4 li,.level5 li,.level6 li').stop(true, true).show(1000);
}, function() {
$(this).find('ul.level2,.level3 li,.level4 li,.level5 li,.level6 li').stop(true, true).show(1000);
$(this).find('ul.level2,.level3 li,.level4 li,.level5 li,.level6 li').stop(true, true).hide(1000);
});});
</script>

任何对此的见解将不胜感激。

谢谢

最佳答案

嘿罗伯特,我讨厌简单的悬停操作会产生意想不到的结果。 随着时间的推移,我开发了一些方法来解决元素的闪烁问题。

假设您有这样的菜单结构;

<div id="nav">
  <ul>
    <li>
      <a href="...">Home</a>
      <ul>
        <li><a href="...">New Products</a></li>
        <li><a href="...">All Products</a></li>
        <li><a href="...">Specials</a></li>
        <li><a href="...">Search</a>
          <ul>
            <li><a href="...">Site</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

CSS 像这样;

<style>
  #nav ul li ul{
    display:none;
  }
</style>

类似这样的 jQuery;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
  $("#nav ul li").each(function(){
    $(this).mouseenter(function(){
      $(this).find("ul:first").show();
    }).mouseleave(function(){
      $(this).find("ul:first").hide();
    });
  })
</script>

注意,在此示例中我使用 .mouseenter().mouseexit() 而不是 .hover()

为什么 .hover() 在此示例中没有达到您预期的效果? 悬停仅适用于单个元素,当您将鼠标悬停在元素内的某些内容上时,它是一个新元素。

jQuery API Documentation 就是一个很好的例子

我希望这能解决您的悬停问题。

关于javascript - jquery 下拉菜单在悬停时重复打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791369/

相关文章:

javascript - 将 .offset().top 与 .slideUp 结合使用

javascript - JS 设置 attr(value) 不会在 DOM 中返回

REST API GET/POST 使用 jquery AJAX 使用 Neo4j 图形数据库获取节点

php - 需要从数据库中获取值并使用 jQuery 填充下拉列表

javascript - DataTable() 没有给出正确的对象引用

javascript - Angular 路由无法正常工作

javascript - 如何使用 Angular 从 json 制作 View (表单)?

javascript - 使用 Javascript : How to create a 'Go Back' link that takes the user to a link if there's no history for the tab or window?

jquery - 响应式设计导航菜单

javascript - 循环总是返回数组的最后一个值