0

紛らわしい質問で申し訳ありませんが、これが私がやろうとしていることです。複数の (ul) アイテムを含むページがあります。(ul) と (li) のクラスを操作するために jquery を使用しています。私がやろうとしているのは、各 (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) を 1 つとして扱っています。そのため、クラス「opp」が (ul) のいずれかに存在する場合、すべての (ul) の「opp」クラスの if ステートメントが起動されます。各個人 (ul) がそのように扱われるようにするにはどうすればよいですか? 事前にご協力いただきありがとうございます。

ダミアン

4

3 に答える 3

4

ドキュメントから:
.is()
現在一致している要素のセットをセレクター、要素、または jQuery オブジェクトに対してチェックし、これらの要素の少なくとも 1 つが指定された引数と一致する場合は 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

Try this:

$('.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 に答える