web-dev-qa-db-ja.com

jQuery-クラスの存在を見つけ、true / falseを返す

クラスがliの子の中に存在するかどうかを確認し、クラスが存在する場合はtrueまたはdefinedを返します。

[〜#〜] html [〜#〜]

<li class="show-more">
<a> if found selected then add to this</a>
<ul>
<li><a> sub-menu</a></li>
<li><a> sub-menu</a></li>
<li><a class="selected"> sub-menu</a></li>
<li><a> sub-menu</a></li>
</ul>
</li>

ここに私のコードがありますが、trueまたはfalseを返すことはありません、それはアンカーのURLを返します

var active_sub_menu = $('li.show-more ul li').find('selected');

alert(active_sub_menu);
if(typeof active_sub_menu == 'defined'){
    $('li.show-more > a').addClass('selected');
}

cSSを使用することを提案しないでください、私はjavascriptが必要です

15
user007

単純に.hasClass()またはlengthを選択しないのはなぜですか:

if ( $("selector").length ) {   /*EXISTS (greater than 0) */  }

または

if ( $("selector")[0] ) {   /*EXISTS (not undefined) */  }

または

if ( $("selector").hasClass("someClass") ) {   /*EXISTS (has class) */  }
$('.show-more').each(function () {

  if ( $(this).find("li a.seleted").length ) {
    console.log('FOUND');
    $(this).children("a").addClass('selected'); // Make main anchor  also selected 
  } else {
    console.log('NOT FOUND');
  }

});
.selected {
  background: red;
}
<ul>
  <li class="show-more">
    <a> if found .selected then add also to this anchor</a>
    <ul>
      <li><a> sub-menu</a></li>
      <li><a> sub-menu</a></li>
      <li><a class="selected"> sub-menu</a></li>
      <li><a> sub-menu</a></li>
    </ul>
  </li>
</ul>


<script src="//code.jquery.com/jquery-3.1.0.js"></script>
28
Roko C. Buljan
if($('li.show-more ul li').hasClass('defined')) {
    $('li.show-more > a').addClass('selected');
}

typeof ?で意図したとおりだと思います。

別のオプション:

var active_sub_menu = $('li.show-more ul li').find('.selected');
if(active_sub_menu.length) {
    $('li.show-more > a').addClass('selected');
}
3
bfavaretto

lengthを使用して、セレクターが要素を返すかどうかをテストします

if( $('li.show-more ul li').find('selected').length){
   $('li.show-more > a').addClass('selected');
}
2
charlietfl