jQuery 菜单切换滑动并悬停?

发布于 2024-12-17 05:52:41 字数 1802 浏览 0 评论 0原文

我有一个菜单,其中只有一项有子列表。以下是 HTML 代码:

<div id="menu">
<ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a>
        <ul>
            <li><a href="#">Example One</a></li>
            <li><a href="#">Example Two</a></li>
            <li><a href="#">Example Three</a></li>
        </ul>
    </li>
</ul>
</div>

当鼠标位于菜单或子菜单上时,我想slideDown 菜单并保持不动。因此,以下内容运行良好,但我希望悬停而不是单击也能实现相同的效果。

 $('#menu ul li').click(function() {
  $('#menu ul li ul').slideToggle('slow', function() {

  });
});

我尝试使用悬停,但它非常有问题,这也是代码:

$("#menu ul li").hover(
  function () {
    $("#menu ul li ul").slideDown('slow');
  },
  function () {
    $("#menu ul li ul").slideUp('slow');
  }
);

我尝试添加 .stop(true, true)$("#menu ul li ul").css( "display", "block");slideDown 之后,但它仍然有问题。

CSS

#menu ul {
    list-style: none;
}
#menu ul li {
    display: block;
    float: left;
    padding: 0;
    margin: 0 30px;
}
#menu ul li a {
    color: #8b4513;
    text-decoration: none;
    font-size: 16px;
}
#menu ul li a:hover {
    text-decoration: underline;
}
#menu ul li a img {
    position: relative;
    top: 2px;
    left: -4px;
}
#menu ul li ul {
    position: absolute;
    width: 151px;
    height: 90px;
    top: 59px;
    left: 300px;
    padding: 10px 0 0 0;
    background: url(gfx/submenu.png) no-repeat;
    z-index: 1;
}
#menu ul li ul li {
    height: 27px;
    float: none;
    margin: 0 25px;
}

I have a menu in which only one item has a sublist. Here is the HTML code:

<div id="menu">
<ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a>
        <ul>
            <li><a href="#">Example One</a></li>
            <li><a href="#">Example Two</a></li>
            <li><a href="#">Example Three</a></li>
        </ul>
    </li>
</ul>
</div>

I would like to slideDown the menu and stay on, when the mouse is on the menu or submenu. So the following is working good, but I want the same thing with hover and not click.

 $('#menu ul li').click(function() {
  $('#menu ul li ul').slideToggle('slow', function() {

  });
});

I tried with hover but it's very buggy, here is the code too:

$("#menu ul li").hover(
  function () {
    $("#menu ul li ul").slideDown('slow');
  },
  function () {
    $("#menu ul li ul").slideUp('slow');
  }
);

I tried to add .stop(true, true) or $("#menu ul li ul").css("display", "block"); after the slideDown but it's still buggy.

CSS

#menu ul {
    list-style: none;
}
#menu ul li {
    display: block;
    float: left;
    padding: 0;
    margin: 0 30px;
}
#menu ul li a {
    color: #8b4513;
    text-decoration: none;
    font-size: 16px;
}
#menu ul li a:hover {
    text-decoration: underline;
}
#menu ul li a img {
    position: relative;
    top: 2px;
    left: -4px;
}
#menu ul li ul {
    position: absolute;
    width: 151px;
    height: 90px;
    top: 59px;
    left: 300px;
    padding: 10px 0 0 0;
    background: url(gfx/submenu.png) no-repeat;
    z-index: 1;
}
#menu ul li ul li {
    height: 27px;
    float: none;
    margin: 0 25px;
}

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

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

发布评论

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

评论(3

野侃 2024-12-24 05:52:41

检查实时

HTML

<div id="menu">
<ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a>
        <ul>
            <li><a href="#">Example One</a></li>
            <li><a href="#">Example Two</a></li>
            <li><a href="#">Example Three</a></li>
        </ul>
    </li>
</ul>
</div>

Jquery

$("#menu ul li").hover(
  function () {
    $(this).children("ul").stop(true,true).slideDown('slow');
  },
  function () {
    $(this).children("ul").stop(true,true).slideUp('slow');
  }
);

Check it out live

HTML

<div id="menu">
<ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a>
        <ul>
            <li><a href="#">Example One</a></li>
            <li><a href="#">Example Two</a></li>
            <li><a href="#">Example Three</a></li>
        </ul>
    </li>
</ul>
</div>

Jquery

$("#menu ul li").hover(
  function () {
    $(this).children("ul").stop(true,true).slideDown('slow');
  },
  function () {
    $(this).children("ul").stop(true,true).slideUp('slow');
  }
);
七分※倦醒 2024-12-24 05:52:41

每次鼠标移到元素上时都会触发悬停。使用输入/离开代替:

$("#menu ul li").mouseenter(
  function () {
    $("#menu ul li ul").slideDown('slow');
  }
);
$("#menu ul li").mouseleave(
  function () {
    $("#menu ul li ul").slideUp('slow');
  }
);

Hover is triggered everytime the mouse moves over the element. Use enter/leave instead :

$("#menu ul li").mouseenter(
  function () {
    $("#menu ul li ul").slideDown('slow');
  }
);
$("#menu ul li").mouseleave(
  function () {
    $("#menu ul li ul").slideUp('slow');
  }
);
书间行客 2024-12-24 05:52:41

小提琴演示:http://jsfiddle.net/ZMLyz/

$('#menu ul li').mouseenter(function() {
    $(this).find('ul').slideDown('slow');
});

$('#menu ul li').mouseleave(function() {
    $(this).find('ul').slideUp('slow');
});

Fiddle Demo: http://jsfiddle.net/ZMLyz/

$('#menu ul li').mouseenter(function() {
    $(this).find('ul').slideDown('slow');
});

$('#menu ul li').mouseleave(function() {
    $(this).find('ul').slideUp('slow');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文