2015-01-15 79 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 2015-01-15 16:32:14

+0

你正在寻找'.in'类还是一个包含子字符串'in'的类? – BeNdErR 2015-01-15 16:32:52

+0

我已编辑它。我在找类.in – drno 2015-01-15 16:34:21

回答

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选择,因为它是jQuery选择比第n个孩子。

+0

或者,更好的办法是,在'if'语句前一次获取元素并将其存储在'var'中,以免两次查询DOM。 – 2015-01-15 16:36:47

+0

是的,当然! – 2015-01-15 16:37:28