【问题标题】::not() in various guises isn't working:not() 以各种形式不起作用
【发布时间】:2011-04-19 03:43:07
【问题描述】:

我正在制作一个简单的 jQuery 导航系统,但我远非专家,因为以下代码可能会演示..

HTML:

  <ul id="main-nav"> 
        <li><a href="../" id="home">HOME</a></li> 
        <li class="pipe">|</li> 
        <li id="about">ABOUT US</li> 
        <li class="pipe">|</li> 
        <li id="projects">PROJECT TYPES</li> 
        <li class="pipe">|</li>             
        <li id="reducing">REDUCING EMISSIONS</li> 
        <li class="pipe">|</li> 
        <li id="carbon">CARBON MARKETS</li> 
        <li class="pipe">|</li> 
        <li id="FAQs">FAQs</li> 
    </ul> 

jQuery:

 $(function () {
        $("#main-nav li:not('.pipe')").hover(function () {
            var $this = $(this).attr("id");
            $('#nav-strip2 ul.sub-nav').hide();
            $("#nav-" + $this).show();
        });
    });

显示/隐藏效果很好,唯一的问题是当管道悬停在它上面时会隐藏所有内容。菜单需要在&lt;li&gt;s 中构成是有原因的,不能只是&lt;a&gt;s,但它并不真正相关且长。

我在这里尝试排除 .hover() 的事情,当它是一个带有 .pipe 类的 li 但没有乐趣时。我究竟做错了什么?任何帮助表示赞赏。我确信有一种方法可以排除没有附加 ID 的 &lt;li&gt;s,这样可以节省将 .pipe 类分配给所有 &lt;li&gt;s 的工作。唉,我还没有 jQuery 的能力来解决这个问题!

谢谢。

【问题讨论】:

    标签: javascript jquery html jquery-selectors


    【解决方案1】:

    使用:not() as a selector时,不要在括号内使用引号:

    $("#main-nav li:not(.pipe)")
    

    【讨论】:

    • 也很抱歉我的帖子中的大型格式化失败,这一切都是新的。不过印象非常深刻!
    • @user713901:没问题 - 你可以在写以后的帖子时参考这个:stackoverflow.com/editing-help 另外,欢迎来到 Stack Overflow!
    【解决方案2】:

    试试这个:

    $(function () {
        $("#main-nav li").not('.pipe').mouseenter(function () {
            $('#nav-strip2 ul.sub-nav').hide();
            $("#nav-" + this.id).show();
        });
    });
    

    【讨论】:

    • 为什么要将 ID 属性分配给名为 $this 的变量?我希望var $this = $(this), id = this.id; - 是的,没错,您不需要 jQuery 来获取元素的 ID。
    • 非常好,2节课的价格,谢谢!我很快就开始意识到 jQuery 很棒!
    • @Matt,是的,我意识到在我发布它之后:-X 也是如此,我只是复制/粘贴 OP 的代码并稍微调整一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多