- 次のコードは、最大の高さを見つけるために使用される作業コードです
$.fn.
このメソッドをjQueryプラグインとして追加するために使用されます。$.Map()
新しい配列を返すMath.Max.Apply
配列から最大数を返す$.fn.tallest = function(outer, margins) { var fn = outer ? "height" : "outerHeight"; return Math.max.apply(Math, $.map(this, function(el){return $(el)[fn](margins);})); }; //var images=jquery(img 1.jpg, img 2.jpg, img 3.ipg, img 4.jpg); var slidesHeight = images.tallest();
これでは、以下の行を理解するのに苦労していますが、.Map()がどのように機能するかは理解しています。
$.map(this, function(el) {return $(el)[fn](margins);})
$(el)[fn](margins)
//特に、この行が画像の高さ属性を返す方法。
2 に答える
$(el)[fn]
$(el)
名前が事前に知られていないメソッドを呼び出す別の方法にすぎません。
$(el)[fn](margins)
は、引数 の値に依存する の値を持つ$(el).height(margins)
、またはそれ$(el).outerHeight(margins)
に依存することと同じです。fn
outer
outer
が虚偽でない場合、fn
に"outerHeight"
なり、上記のステートメントは次のようになります$(el).outerHeight(margins)
outer
が falsy の場合、fn
に"height"
なり、上記のステートメントは次のようになります$(el).height(margins)
*Felix Kling のメモを組み込むために編集されました。
わかりました、分解しましょう
$.map(this, function(el){return $(el)[fn](margins);})
$.map
コレクションを反復処理し、渡された関数をコレクション内の各要素に対して実行し、すべての結果を含む配列を返す関数です。
例えば:$.map([1,2], function(i) {return i + 1}) [2, 3]
は
this
、jQuery コレクション$.fn.tallest()
が対象としているコレクションを参照します。例えば:$('tr').tallest() // => this would refer to all the tr's within the dom
$(el)[fn]
JavaScript では、次のような通常のドット表記を使用してレシーバーにバインドされた関数を呼び出すか、$(e1).height
提供した例のようにブラケット表記を使用できます$(e1)['height']
。$(e1)[fn](margins)
margins
関数に渡される引数height()
です。
お役に立てれば。