2015-01-15 102 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