JQuery - “column”类名的最大数量

时间:2011-07-28 18:36:27

标签: jquery html-table

我想找到每个“列”的最大元素数,并获取列className。因此,例如,在下表中,我将得到一个包含['class2', 'class3']的数组,因为两个“列”都有最大数量的元素。感谢帮助。

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

5 个答案:

答案 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 

答案 1 :(得分:0)

使用以下内容获取每列的编号:

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

然后在firstColItems,secondColItems和thirdColItems之间找到最大值。

如果我理解你的要求......

答案 2 :(得分:0)

我使用了两个.each()来实现这一目标。我希望你喜欢它。 :)

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

答案 3 :(得分: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; 
    })
);

根据max:

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

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

答案 4 :(得分:-1)

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