2011-07-28 26 views
1

我想找到每個「列」的元素的最大數量並獲取列的類名。因此,例如,在下面的表格中,我會得到一個包含['class2', 'class3']的數組,因爲兩個「列」都具有最大數量的元素。幫助表示讚賞。謝謝。JQuery - 「列」類的最大數量類名

更新佈局: http://jsfiddle.net/2nbGe/5/

+1

你可能想重新思考你的問題,我不認爲有人真的知道你在問什麼。 – Jack

+0

我想通過檢查每個列上最多的元素來獲取一個類名的數組。所以再一次,如果col1有兩個元素,col [2-4]包含4個元素,那麼col [2-4]將在數組中。 – JKuschel

+0

查看更新後的佈局的小提琴,你可以看到,最後一列有最多的「行」數,因此,數組也應該只包含「class3」 – JKuschel

回答

0

使用以下獲取每列的數量:

var firstColItems = $('.class1').length; 
var secondColItems = $('.class2').length; 
var thirdColItems = $('.class3').length; 

然後找到firstColItems,secondColItems和thirdColItems之間最大。

如果我明白你問什麼正確....

-1
var array = new Array(); 
$('table tr').each(function() { 
    array.push($(this).children().last().attr('class')); 
}); 
+0

這不是隻是將'class3'添加到數組兩次?另外,不要使用'new Array()'只使用'[]' –

+0

我喜歡使用'new Array()',你在說什麼?他想要最後一個類的數組,這就是這個解決方案的用途嗎? – Phil

+0

這不是他想要的。他希望具有最多元素的列的類。 –

1

試試這個

var classes = {}; 
$("table td").each(function(){ 
    if(!classes[$this.attr("class")]){ 
     classes[$this.attr("class")] = 1; 
    } 
    else{ 
     classes[$this.attr("class")] = classes[$this.attr("class")]+1; 
    } 
}) 

//classes object will contain the each class and its count 
+0

@JKuschel - 它對你有幫助嗎? – ShankarSangoli

0

我用了兩個。每()來實現這一目標。我希望你喜歡它。 :)

$('table').find('tr').each(function(){ 
    $(this).find('td').each(function(clNo){ 
     $(this).addClass('clumn' + clNo); 
    }); 
}) 
+0

@JKuschel,你試過這個嗎? – Mohsen

0

不知道具體情況,很難給具體代碼;但該方法對任何方案的相同:

創建類的數組,並得到他們的計數(這個假定第一行中的所有類):

var arr = new Array(); 
$('tr:first td') 
    .each(function(i, o) { 
     var c = $(o).attr('class'); 
     arr.push({ 
      class : c, 
      count : $('.' + c).length 
     }); 
    }); 

獲取最大計數:

var maxCount = Math.max.apply(Math, 
    $.map(arr, function(o,i) { 
     return o.count; 
    }) 
); 

濾波器基於最大陣列:

var arrMax = $.map(arr, function(o,i) { 
    if (o.count == maxCount) return o.class; 
}); 

演示:http://jsfiddle.net/rkw79/CJ2av/