2017-08-30 149 views
0

它應該是非常直接的,但由於某種原因,它不起作用。addClass給第一個孩子

$("div.dot-navigation-inner-wrap").find("div:first").addClass("active");
.active { border: 1px solid #CCC; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="dot-navigation-inner-wrap"> 
 
    <div class="dot-navigation">1</div> 
 
    <div class="dot-navigation">2</div> 
 
    <div class="dot-navigation">3</div> 
 
</div>

+0

您是否檢查控制檯是否有錯誤? – guradio

+0

沒有錯誤,我正在起訴同一類型的行,將一個類添加到列表的第一個裏,並且它可以工作。 – Sergi

+1

我編輯了你的問題,包括一個可運行的片段。正如你所看到的,它工作正常。如果您在控制檯中沒有錯誤,那麼您可能在DOM準備好之前運行代碼。您應該將代碼放在一個document.ready事件處理程序中(上面的代碼片段會自動執行)。要做到這一點,使用'$(函數(){/ *您的代碼在這裏... * /});' –

回答

2

這是工作的罰款。確保你的HTML文件中包含了JQuery插件。

$("div.dot-navigation-inner-wrap").find("div:first").addClass("active");
.active{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="dot-navigation-inner-wrap"> 
 

 
    <div class="dot-navigation">A</div> 
 
    <div class="dot-navigation">B</div> 
 
    <div class="dot-navigation">C</div> 
 

 
</div>

+0

我想我的錯誤是其他地方,因爲我包括這條線內的doc準備功能和更多的jQuery,工作得很好... – Sergi

+1

只是FYI'它的工作原理'不被認爲是答案,因爲它對OP沒有任何幫助。這一切都證明他們做錯了什麼,但沒有給他們任何解決方案。 –

0

I'm not having troubles

我的直覺是你在頁面加載之前執行javascript代碼。這意味着當您的JavaScript運行時,它無法找到您搜索的標籤。

考慮負載塊封閉:

$(function() { 
    $("div.dot-navigation-inner-wrap").find("div:first").addClass("active"); 
}); 
+0

它是在一個文檔就緒功能。這對我來說沒有任何意義,因爲我之前使用幾乎相同的一行來向頁面中的所有第一個li添加一個類,並且它工作得很好......很奇怪。 – Sergi

0

我加入類的點出現之前,因爲我是一個幾行追加下來。

+0

如果它是在一個文檔就緒功能,它應該沒有區別。 – Neil