2015-01-15 2 views
-4

hasClass가 있는지 확인하는 데 문제가 있지만 작동하지 않는 이유를 모르겠습니다. 다른 DIV 안에있는 두 번째 DIV에 "in"클래스가있는 경우를 원합니다.hasClass가 작동하지 않는 경우

jQuery를

if (jQuery(".panel div:nth-child(2)").hasClass("in")) { 
    jQuery(this).css("margin-top","200px"); 
    console.log("has"); 
}; 

HTML

<div class="panel panel-default"> 
     <div class="panel-heading"></div> 
     <div id="collapse1" class="accordion-body collapse in"></div> 
</div> 

편집 : 아코디언을 열 때 미안 클래스가 제공됩니다.

+6

HTML에없는 클래스가 있는지 확인하고 있습니다. 어떻게 작동합니까? – Slime

+0

클래스'.in' 또는 하위 문자열'in'을 포함하는 클래스를 찾으십니까? – BeNdErR

+0

나는 그것을 편집했다. 나는 클래스를 찾습니다. – drno

답변

2

조건이 블록 레벨 명령문 일 경우 $(this)을 사용하여 if 블록을 범위로 참조 할 수 없습니다. 그래서, 당신은 자신이 좋아하는 선택기를 사용해야합니다

if (jQuery(".panel div:nth-child(2)").hasClass("in")) { 
    jQuery(".panel div:nth-child(2)").css("margin-top","200px"); 
    console.log("has"); 
}; 

단순화 된 버전 :

var selector = jQuery(".panel div:eq(1)"); 
if(selector.hasClass("in")){ 
    selector.css("margin-top","200px"); 
} 

내가 eq 선택기를 사용했습니다를가 n 번째의 아이에 비해 jQuery를 선택 때문이다.

+0

아니면 더 나은 점은 요소를'if' 문 앞에 한 번만 가져 와서'var'에 저장하면 DOM을 두 번 쿼리하지 않을 것입니다. –

+0

그래, 당연히! –