2011-04-18 16 views
2

我做一個簡單的jQuery導航系統,但我決不是專家在它,如下面的代碼可以demonsytrate ..:沒有()在各種名目不工作

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(); 
     }); 
    }); 

的顯示/隱藏工作得很好,當管懸停在它隱藏的一切唯一的問題是。菜單需要在<li> s中組成的原因有很多,不能僅僅是<a> s,但它並不真正相關且很長。

我在這裏試圖排除.hover()的東西發生時,它是與.pipe類的李,但沒有喜悅。我究竟做錯了什麼?任何幫助讚賞。我確定有一種排除<li>的方法,不需要附加ID,這將節省將.pipe類分配給所有那些<li> s。唉,我還沒有jQuery能力來解決這個問題呢!

謝謝。

回答

6

當使用:not() as a selector,沒有它的括號內使用引號:

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

英雄,非常感謝。很高興去恩科夫,我不是一英里之外。 – artparks 2011-04-18 18:22:20

+0

也對我的文章中的大型格式化失敗抱歉,這是所有這些新增功能。雖然很令人印象深刻! – artparks 2011-04-18 18:22:57

+0

@ user713901:沒問題 - 在編寫將來的帖子時可以參考這個:http://stackoverflow.com/editing-help另外,歡迎來到Stack Overflow! – BoltClock 2011-04-18 18:24:53

1

試試這個:

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

爲什麼你的ID屬性賦值給一個名爲$ this'變量'?我期望'var $ this = $(this),id = this.id;' - 是的,沒錯,**你不需要jQuery來獲取元素的ID。** – 2011-04-18 18:20:20

+0

優秀,價格爲2節課一個,謝謝!我很快就意識到jQuery非常棒! – artparks 2011-04-18 18:35:27

+0

@Matt,是的,我意識到,我發佈後:-X那也是真的,我只是複製/粘貼OP的代碼,並調整它有點 – Neal 2011-04-18 18:36:37