2013-06-03 235 views
1

我想通過具有ID#color-lines和每個元素的獨特類的元素列表進行迭代,如下所示:<div id="color-lines" class="block-2088">獨特的類由WordPress的動態驅動帖子ID,因此每個塊都是唯一的。使用jQuery獲取每個元素的子元素的長度

在每個div內有各種數量的<a>標籤,我試圖使用addClass到每個div,具體取決於每個div中有多少個子元素。

$("#color-lines").each(function(){ 

     var className = $(this).attr("class"); 
     var anchoLink = ("." + className); 

     var n = $(anchoLink).children().length; 

     $(anchoLink).children().addClass("line-width-" + n); 

    }); 

我得到的是每<a>標籤與即使有不同數量的每個DIV <a>元素的每一個div元素同一類line-with-n

+4

「通過有編號顏色線元素的列表迭代」 - 停止。 Id的應該是獨一無二的... – lifetimes

+1

...和類不應該。 (好吧,他們可以,但沒有多少意義。) – Blazemonger

+1

每個文檔的ID必須是唯一的。你不能在同一個文檔中有多個具有相同ID的元素,或者你正在做一些非常錯誤的事情。 – crush

回答

2

切換你的ID和類,換句話說,ID的應該是唯一的,類應該用於類似的元素。你可以寫each()循環具有相同類的元素:

$(".color-lines").each(function() { 
    var n = $(this).children.length; 
    $(this).children("a").addClass("line-width-" + n); 
}); 
+0

OK - 最簡單的方法似乎是tymeJV的lution。謝謝 – user2018474

1

ID's必須是唯一的,而class可以重複。

使用id作爲選擇器只返回1項,所以$('#color-lines).each只循環通過第一個#color-lines

+1

是的,謝謝!我得到這個工作:'$(「.color-lines」).each(function(){ \t \t \t var className = $(this).attr(「class」)。split('')[1 ]; \t \t \t VAR anchoLink =(+的className 「」);。 \t \t \t變種N = $(anchoLink)。兒童()長度; \t \t \t $(anchoLink + 「A」)。 addClass(「line-width-」+ n); \t \t});' – user2018474

0

儘管我同意ID應該是唯一的規則,但您可能需要做的是在您的DIV選擇器上添加一個find()調用。在這個例子中,我假設你交換了類和ID屬性。

$(".color-lines").each(function(){ 

    $(this).find("a").addClass("line-width-" + $(this).children().length); 

});