2011-07-28 10 views
1

"column"당 최대 요소 수를 찾고 className 열을 가져오고 싶습니다. 예를 들어 아래 표에서 "열"에 최대 개수의 요소가 있으므로 ['class2', 'class3']이 포함 된 배열을 얻게됩니다. 도움을 주시면 감사하겠습니다. 감사.JQuery - "columns"의 최대 개수 classname

업데이트 레이아웃 : http://jsfiddle.net/2nbGe/5/

+1

질문을 다시 생각해보고 싶을 것입니다. 아무도 묻고있는 것을 정말로 아는 사람은 없을 것이라고 생각합니다. – Jack

+0

각 열의 최대 요소 수를 확인하여 클래스 이름의 배열을 가져오고 싶습니다. 다시 col1에 두 개의 요소가 있고 col [2-4]에 4 개의 요소가 들어 있으면 col [2-4]가 배열에 있습니다. – JKuschel

+0

수정 된 레이아웃을 보려면 fiddle을 참조하십시오. 마지막 열은 가장 많은 수의 "rows"를 가지므로 배열에는 "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

내가 두 .each를 사용하십시오. 나는 그것을 좋아하면 좋겠. :)

$('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/

관련 문제