JQuery - максимальное количество имен столбцов - PullRequest
1 голос
/ 28 июля 2011

Я хотел бы найти максимальное количество элементов в «столбце» и получить столбец (и) className. Так, например, в приведенной ниже таблице я бы получил массив, содержащий ['class2', 'class3'], так как оба «столбца» имеют максимальное количество элементов. Помощь приветствуется.

Обновленный макет: http://jsfiddle.net/2nbGe/5/

Ответы [ 5 ]

1 голос
/ 28 июля 2011

Попробуйте это

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 голосов
/ 29 июля 2011

Не зная специфики, сложно дать конкретный код;но алгоритм одинаков для любого сценария:

создать массив классов и получить их количество (предполагается, что в первой строке есть все классы):

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/

0 голосов
/ 28 июля 2011

Я использовал два .each () для достижения этой цели.Я надеюсь тебе понравится.:)

$('table').find('tr').each(function(){
     $(this).find('td').each(function(clNo){
        $(this).addClass('clumn' + clNo);
     });
})
0 голосов
/ 28 июля 2011
var array = new Array();
$('table tr').each(function() {
   array.push($(this).children().last().attr('class'));
});
0 голосов
/ 28 июля 2011

Получить номер каждого столбца, используя следующее:

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

затем найдите максимальное значение между firstColItems, secondColItems и thirdColItems.

Если я правильно понял, что вы спрашиваете ....

...