2013-02-15 29 views
12

Tôi muốn kiểm tra xem lớp học có tồn tại bên trong một đứa trẻ của li và nếu lớp tồn tại trở về true hoặc defined.jQuery - tìm một lớp tồn tại và trả về true/false

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> 

đây là mã của tôi, nhưng sẽ không trả lại đúng hay sai, nó trả lại url của neo

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'); 
} 

xin vui lòng không đề nghị sử dụng CSS, tôi chỉ cần javascript

+0

'find ('selected')' và bạn có thể thấy ''selected''! =='' .selected'' –

Trả lời

23

Tại sao không chỉ đơn giản là đi cho .hasClass() hoặc length:

if ($("selector").length) { /*FOUND*/ } 

hoặc

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>

+0

hãy kiểm tra câu hỏi cập nhật, có một thẻ neo chỉ sau thẻ danh sách và đó là nơi tôi muốn thêm lớp đã chọn nếu tìm thấy trong con của nó 'ul li a' – user007

+0

cảm ơn nó đang hoạt động ngay bây giờ :-) – user007

2

sử dụng length để kiểm tra xem bộ chọn có trả về các phần tử

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

nó không hoạt động, tôi đã thử 'alert ($ ('li.show-more ul li ') tìm thấy (' qa-nav-main-selected '). chiều dài); 'và nó trả về' 0' nhưng có 'lớp' được chọn trong một con – user007

+0

vui lòng kiểm tra câu hỏi cập nhật – user007

3
if($('li.show-more ul li').hasClass('defined')) { 
    $('li.show-more > a').addClass('selected'); 
} 

tôi giả sử đó là những gì bạn dự định với typeof?

Một tùy chọn khác:

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

Tôi đoán kiểu ở đây, mã của bạn là khó hiểu. – bfavaretto

+0

'active_sub_menu.length' cũng trả về' 0' ?? – user007

Các vấn đề liên quan