複数の.packagesクラスを持っている場合、現在の.packagesの実装方法javascriptの 'this'キーワード
$('.packages').each(function(){
var sizeOfLi = $(".packages:last > li").width();
});
複数の.packagesクラスを持っている場合、現在の.packagesの実装方法javascriptの 'this'キーワード
$('.packages').each(function(){
var sizeOfLi = $(".packages:last > li").width();
});
var sizeOfAllLi = $(".packages:last > li").map(function() {
return $(this).width();
});
jQueryのコレクションに対するmap
関数の繰り返し処理を行い、現在の要素にthis
セットと、引数に設けられた関数を呼び出します。
の戻り値をすべて配列
のjQueryコレクション(コメントを参照)に集めます。配列が必要な場合は、上記の末尾に.get()
を追加します。関数の内部
、this
は裸のDOM要素であるため、私たちは、jQueryの.width()
を使用できるようにjQueryの要素として再ラップthis
する必要があります。
*"これは配列内のすべての戻り値を収集します "* jQueryオブジェクトにラップされています。実際の配列を取得するには '.get()'を使います。 –
ありがとうたくさん:) –
@ T.J.Crowder:jQueryのコレクションは配列にダックタイプなので、配列のように使うことができます、AFAIK。 '[0]'は '.get(0)'と同様に動作し、 'Array'プロトタイプで定義されたすべてのプリミティブも持ちます。そうじゃないの? – Amadan
これは、関数のメインセレクタであるjQueryのイベントハンドラに常に適用されます。
each
答えは大丈夫ですか、map
を使用することができます。
var liSizeArray = $(".packages:last > li").map(function() {
return $(this).width();
}).get();
戻り値は数値の配列、それぞれのli
要素の幅になります。あなたが選択したときli
の幅を取得したい場合
あなたは
を何をしたいかによって異なります。Amadanは
var sizeOfAllLi = $(".packages:last > li").map(function() { return $(this).width(); })
を言ったように
$(".packages:last > li").click(function(){
sizeOfLi = $(this).width();
});
マップすべてのliサイズが行いますthis
キーワードは、この場合の最新のLiを指します。
FWIW JavaScriptの一般的なコンセプトである 'this'よりjQueryの方が多くなります。 –
私はそれに答えてから質問が大きく変わった。正確に何をしようとしているのかを明確にすることはできますか?あなたの編集は基本的には意味をなさない。なぜなら、それはそのまま動作するから(つまり、あなたが望むものではないかもしれないが、有用なことがあるから)。 – Amadan