2011-07-28 18 views
1

"column"あたりの要素の最大数を見つけて、classNameを取得したいと思います。たとえば、以下の表では、両方の "列"に最大数の要素があるため、['class2', 'class3']を含む配列を取得します。ヘルプは高く評価されます。ありがとう。JQuery - "columns"の最大数classname

更新レイアウト: http://jsfiddle.net/2nbGe/5/

+1

質問を再考したいと思うかもしれませんが、私は誰もあなたが求めていることを本当に知っているとは思わないでしょう。 – Jack

+0

各列の要素の最大数をチェックしてクラス名の配列を取得したいと考えています。したがって、col1に2つの要素があり、col [2-4]に4つの要素が含まれている場合、col [2-4]が配列に含まれます。 – JKuschel

+0

あなたが見ることができるように、更新されたレイアウトのためのフィドルを参照してください、最後の列は "行"の最もnumを持っているので、配列は "クラス3" – 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'を配列に2回追加するのではないですか?また、 '[] 'を使うだけで' 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

を試してみて、私はこれを達成するために)(2 .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/