jQuery菜单悬停问题

发布于 2024-11-26 21:03:00 字数 770 浏览 0 评论 0原文

我有一个相当简单的菜单:

<ul id="menu">
<!-- TemplateBeginEditable name="mainmenu" -->
    <li><a href="index.htm" title="" class="home">Home</a></li>
    <li><a href="consumers.htm" title="" class="consumers">Consumers</a>
         <ul id="consumer-menu">
            <li> --snip--

并且:

    $(document).ready(function() {
        $('.consumers').hover( function() {
            $("#consumer-menu").fadeIn();
        }, function() {
            $("#consumer-menu").fadeOut();
        });
    });

问题是,当您将鼠标从

我认为我需要的是一种选择两者的方法.consumers 及其所有子元素都在一个 jQuery 选择器语句中,可能类似于 $('.consumers > * (但包括 .consumers)。

感谢您的帮助!

约翰。

I have a fairly simple menu:

<ul id="menu">
<!-- TemplateBeginEditable name="mainmenu" -->
    <li><a href="index.htm" title="" class="home">Home</a></li>
    <li><a href="consumers.htm" title="" class="consumers">Consumers</a>
         <ul id="consumer-menu">
            <li> --snip--

and:

    $(document).ready(function() {
        $('.consumers').hover( function() {
            $("#consumer-menu").fadeIn();
        }, function() {
            $("#consumer-menu").fadeOut();
        });
    });

The problem is that when you move your mouse away from <li class="consumers".. #consumer-menu dissapears (as it should), I've tried using $('.consumers, #consumer-menu also but that doesn't work (you mouse out from #consumer-menu to .consumers and the menu fades out then in again.)

What I think I need is a way to select both .consumers AND all it's children in one jQuery selector statement, perhaps something like $('.consumers > * (but including .consumers).

Thanks for helping!

John.

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

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

发布评论

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

评论(2

南冥有猫 2024-12-03 21:03:00

在给定上下文的情况下,我能想到的最简单的答案是像这样重构 HTML:

<ul id="menu">
<!-- TemplateBeginEditable name="mainmenu" -->
    <li><a href="index.htm" title="" class="home">Home</a></li>
    <li class="consumers"><a href="consumers.htm" title="">Consumers</a>
         <ul id="consumer-menu">
             <li>test</li>
             <li>test</li>
         </ul>
    </li>
</ul>

这应该在 jQuery 不变的情况下进行。

(使用 http://jsfiddle.net/MgbdN/ 进行测试)

The simplest answer I can think of given the context is to restructure your HTML like this:

<ul id="menu">
<!-- TemplateBeginEditable name="mainmenu" -->
    <li><a href="index.htm" title="" class="home">Home</a></li>
    <li class="consumers"><a href="consumers.htm" title="">Consumers</a>
         <ul id="consumer-menu">
             <li>test</li>
             <li>test</li>
         </ul>
    </li>
</ul>

which should work out with the jQuery unchanged.

(tested with http://jsfiddle.net/MgbdN/)

水晶透心 2024-12-03 21:03:00

您对这里的解决方案有何看法: http://jsfiddle.net/WDktv/

基本上,每当您悬停时在 ul (或者更一般的菜单节点)上,那么您应该淡入其子菜单 ul (菜单节点)

<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li>
    <a href="#">Three (+)</a>
    <ul style="display:none;">
        <li><a href="#">Three and a half</a></li>
        <li><a href="#">Three and three quarters</a></li>
    </ul>
</li>
<li><a href="#">Four</a></li>

$('li').hover(
    function(){$("ul", this).fadeIn()}, 
    function(){$("ul", this).fadeOut()})

What do you think of the solution here: http://jsfiddle.net/WDktv/

basically, whenever you hover over a ul (or a menu node, to be more general), then you should fade in its child menu ul (menu node)

<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li>
    <a href="#">Three (+)</a>
    <ul style="display:none;">
        <li><a href="#">Three and a half</a></li>
        <li><a href="#">Three and three quarters</a></li>
    </ul>
</li>
<li><a href="#">Four</a></li>

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