0

抱歉这个令人困惑的问题,但这就是我想要做的。我有一个包含多个(ul)项目的页面。我正在使用 jquery 来操作 (ul) 和 (li) 的类。我想要做的是将每个(ul)视为一个个体,而不是一个整体。例如我的:

<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 做的是,如果存在“opp”类,则向其添加特定代码。如果它不在那里,那么做其他事情。我遇到的问题是,当我进行 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) 视为一个。所以如果类“opp”出现在任何(ul)中,那么它会触发所有(ul)的“opp”类的if语句。我如何让它发挥作用,以便每个人(ul)都被这样对待?提前感谢您的帮助!

达米安

4

3 回答 3

4

来自文档:
.is()
根据选择器、元素或 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">');
于 2012-11-19T19:24:46.663 回答
2

使用.each循环(并尝试.hasClass()):

$('.bNav').each(function(i,el) {
    if ($(this).hasClass('opp')) {

http://api.jquery.com/each

http://api.jquery.com/hasClass

于 2012-11-19T19:24:53.353 回答
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">')
;
于 2012-11-19T19:26:29.993 回答