2010-07-25 51 views
2

我想弄清楚如何計算div欄內「bar」容器的數量,然後將該數字添加爲類。例如,在第一項類=「杆3」,而第二類=「欄2」使用jquery計算每個容器中div的數量

<div class="item"> 
    <div class="foo"></div> 
    <div class="bar"> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    </div> 
</div><!-- /item --> 

<div class="item"> 
    <div class="foo"></div> 
    <div class="bar"> 
    <div class="slide"></div> 
    <div class="slide"></div> 
    </div> 
</div><!-- /item --> 
+0

只是注意 - 如果你打算在課堂上使用數字樣式是行不通的容器。 CSS類名不能(或以數字開頭)。 – Pat 2010-07-25 18:48:16

+0

我知道。這只是簡化的代碼。 – Alex 2010-07-25 18:55:27

回答

2
$('#item').each(function(i, elem){ 
    var $this = $(this), 
     len = $(this).find('.bar').children('div').length; 

    $this.addClass('bar ' + len); 
}); 

雖然書面方式本我意識到,要使用多個IDs名爲item。這是無效的HTML markup和jQuery可能只會返回第一次發生。用類替換ID並使用$('.item')

1
$.each($(".item"), function(i, d) { 
    var count = $(d).find(".bar div").length; 
    $(d).addClass("bar_" + count); 
}) 
+0

no'.count()'在jQuery中。使用'.size()'或直接'.length'屬性。 – jAndy 2010-07-25 18:49:59

+0

哎呀,只是修復它。 – 2010-07-25 18:51:39

0

在jQuery的1.4,你可以使用函數作爲.addClass()參數:

$('.bar').addClass(function() { 
    return $(this).children('div').length; 
});