2012-11-19 45 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">') 
;