JQuery - найти класс и вернуть true/false
Я хочу проверить, существует ли класс внутри дочернего элемента li
, и если класс существует return 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
Ответы
Ответ 1
Почему бы просто не пойти на .hasClass()
или length
:
if ( $("selector").length ) { /*FOUND*/ }
или
if ( $("selector").hasClass("someClass") ) { /*FOUND*/ }
$('.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>
Ответ 2
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
используйте length
, чтобы проверить, возвращает ли элемент выбора
if( $('li.show-more ul li').find('selected').length){
$('li.show-more > a').addClass('selected');
}