複数の .packages クラスを持っている場合、現在の .packages に対して以下を実装する方法は?
$('.packages').each(function(){
var sizeOfLi = $(".packages:last > li").width();
});
複数の .packages クラスを持っている場合、現在の .packages に対して以下を実装する方法は?
$('.packages').each(function(){
var sizeOfLi = $(".packages:last > li").width();
});
var sizeOfAllLi = $(".packages:last > li").map(function() {
return $(this).width();
});
map
関数はjQueryコレクションを反復処理し、引数で指定された関数を呼び出し、現在の要素に設定this
します。jQueryコレクションの配列にすべての戻り値を収集します(コメントを参照)。配列が必要な場合.get()
は、上記の最後に追加してください。
this
関数内で、jQuery要素として再ラップする必要があります。これによりjQueryを使用できるようになります。.width()
これthis
は、裸のDOM要素であるためです。
$(".packages:last > li").each(function() {
console.log($(this).width())
});
答えは問題ありません。each
または、次を使用できますmap
。
var liSizeArray = $(".packages:last > li").map(function() {
return $(this).width();
}).get();
戻り値は、それぞれのli
要素の幅である数値の配列になります。
これは常に jQuery のイベント ハンドラーに適用されます。これは、関数のメイン セレクターです。
何をしたいかによる
選択時の幅を取得したい場合li
:
$(".packages:last > li").click(function(){
sizeOfLi = $(this).width();
});
アマダンが言ったように、すべてのliサイズをマップします
var sizeOfAllLi = $(".packages:last > li").map(function() { return $(this).width(); })
このthis
場合、キーワードは現在のliを参照します