2012-01-23 3 views
0

だから、これは私が仕事だろうと思ったものです:jQuery、オブジェクト配列の最大幅を見つけるにはどうすればよいですか?

Math.max($j.map($j.makeArray($j(".rl_shell")), function(val, i){ 
    $j(val).width(); 
})); 

内訳:

$j.isArray($j.makeArray($j(".rl_shell"))) 

trueを返し

と私はちょうど

$j.map($j.makeArray($j(".rl_shell")), function(val, i){ 
     $j(val).width(); 
    }) 

を行うとき、私は空を取得配列([])が結果として得られます。そう、私はマップが間違って使っていることを、

$j(".rl_shell") 

戻り[DIV、DIV]

を推測しているが、私はここでの構文を使用: http://api.jquery.com/jQuery.map/ので、私はまさにわからないんだけど契約があります。

EDIT:答えの提案のカップルにつきとして

、私はこれを作ってみた:

私はそれを回避Math.maxを追加するとき [0,950]

を返しますが

$j.map($j.makeArray($j(".rl_shell")), function(val, i){ 
    return $j(val).width(); 
}); 

、私は得るNaN =/

答えて

4

選択したすべての要素のうち最も広い範囲を取得しますか?あなたがmapコールバックのreturn

を逃しただけでなく

Math.max.apply(Math, $('selector').map(function(){ 
    return $(this).width(); 
}).get()); 
+0

私は問題に出くわしました、私は新しい問題を反映するために私の質問を更新しました。 – NullVoxPopuli

+0

最後に.get()を追加する理由 – NullVoxPopuli

+0

'.get'はjQueryオブジェクトコレクションをネイティブ配列に変換します。 '.apply'に配列を与えなければなりません。 Math.max.apply(Math、[0,950])は 'Math.max(0,950)'と等価であり、 '950'を返すのに対し、' Math.max([0,950]) 'はNaNを返します。 。 – dfsq

2

returnからmapコールバック:

+0

BAH、あまりにも私が問題に遭遇しました – NullVoxPopuli

+0

o.oリターンを必要としないルビーために使用される、私は新しい問題を反映するために、私の質問を更新しました。 – NullVoxPopuli

2

あなたは、配列の最大値を取得するためにMath.max.apply(window, arr)を使用する必要があります。

Math.maxに直接配列を渡すと、NaNが返されます。

コードは以下のようになります。

Math.max.apply(window, $.map($('.rl_shell'), function() {return $(this).width();})); 
+0

ねえ、ちょうど私が逃げ出したものです。 = D – NullVoxPopuli

関連する問題