2012-11-19 75 views
0

很抱歉的混亂問題,但這裏是我想要做的事。我有一個包含多個(ul)項目的頁面。我正在使用jQuery來操縱(ul)和(li)的類。我想要做的就是把每個人(ul)當作一個個體來對待一個整體。例如我的:使用jQuery檢查元素是class和治療鏈元素孩子單獨

<ul class="bNav"> 
    <li><a href="#">Home</a></li> 
    <li><a href="#">The Artists</a></li> 
    <li><a href="#">The Art</a></li> 
</ul> 

<ul class="bNav opp"> 
    <li><a href="#">Home</a></li> 
    <li><a href="#">The Artists</a></li> 
    <li><a href="#">The Art</a></li> 
</ul> 

我試圖用我的jQuery做的是,如果「奧普」類存在再加入一定數量的代碼給它。如果它不在那裏,那麼做一些其他的事情。我遇到的問題是,當我做一個if檢查時,如果這個類存在,它將把所有(ul)的視爲他們有這個類。這裏是我的代碼:

if ($('.bNav').is('.opp')) { 
    $('.bNav').addClass('nav').wrap('<nav class="navbar navbar-inverse"><div class="navbar-inner">'); 
} else { 
    $('.bNav').addClass('nav').wrap('<nav class="navbar"><div class="navbar-inner">'); 
} 

$('.bNav > li > ul').addClass('dropdown-menu').parent('li').addClass('dropdown').find('a:first').attr('data-toggle', 'dropdown').addClass('dropdown-toggle').append('<span class="caret"></span>'); 
$('.bNav ul ul').addClass('dropdown-menu').parent('li').addClass('dropdown-submenu'); 

同樣,代碼將所有(ul)作爲一個對待。所以如果在任何(ul)中都存在「opp」類,那麼它會爲所有(ul)的「opp」類引發if語句。我如何使其工作,以便每個人(ul)都是這樣對待的?感謝您的幫助!

達明

回答

4

從文檔:
。是()
檢查當前匹配組針對一個選擇器,元件,或jQuery對象元件,並且如果返回true這些元素中的至少一個匹配給定的參數。

嘗試:

$('.bNav.opp').addClass('nav').wrap('<nav class="navbar navbar-inverse"><div class="navbar-inner">'); 
$('.bNav').not('.opp').addClass('nav').wrap('<nav class="navbar"><div class="navbar-inner">'); 
+0

是的,這種方法在這種情況下更有意義。 +1 – Blazemonger

+0

大聲笑....謝謝。當你粘貼什麼。它是否比從jquery站點更有意義來自你。好的解決方案愛有最少量的代碼。 – Damien

1

試試這個:

$('.bNav') 
    .addClass('nav') 
.filter('.opp') 
    .wrap('<nav class="navbar navbar-inverse"><div class="navbar-inner">') 
.end().not('.opp') 
    .wrap('<nav class="navbar"><div class="navbar-inner">') 
;