:各种伪装的not()不起作用

art*_*rks 2 html javascript jquery jquery-selectors

我正在制作一个简单的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> 
Run Code Online (Sandbox Code Playgroud)

jQuery的:

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

显示/隐藏工作得很好,唯一的问题是当管道悬停在它上面时隐藏一切.有一个原因,菜单需要在<li>s中组成,而不仅仅是<a>s,但它并不是真正的相关和冗长.

我正在尝试排除.hover()的东西,当它是一个带有.pipe类的li时发生,但没有任何乐趣.我究竟做错了什么?任何帮助赞赏.我确信有一种方法可以排除<li>没有附加ID的s,这样就可以节省将.pipe类分配给所有这些<li>.唉,我还没有jQuery的能力来解决这个问题!

谢谢.

Bol*_*ock 6

:not()用作选择器时,不要在其括号内使用引号:

$("#main-nav li:not(.pipe)")
Run Code Online (Sandbox Code Playgroud)