-1

複数の .packages クラスを持っている場合、現在の .packages に対して以下を実装する方法は?

$('.packages').each(function(){
    var sizeOfLi = $(".packages:last > li").width();
});
4

5 に答える 5

8
var sizeOfAllLi = $(".packages:last > li").map(function() {
  return $(this).width();
});

map関数はjQueryコレクションを反復処理し、引数で指定された関数を呼び出し、現在の要素に設定thisします。jQueryコレクションの配列にすべての戻り値を収集します(コメントを参照)。配列が必要な場合.get()は、上記の最後に追加してください。

this関数内で、jQuery要素として再ラップする必要があります。これによりjQueryを使用できるようになります。.width()これthisは、裸のDOM要素であるためです。

于 2012-05-14T07:13:58.310 に答える
1
$(".packages:last > li").each(function() {
   console.log($(this).width())
});
于 2012-05-14T07:13:42.140 に答える
1

答えは問題ありません。eachまたは、次を使用できますmap

var liSizeArray = $(".packages:last > li").map(function() {
    return $(this).width();
}).get();

戻り値は、それぞれのli要素の幅である数値の配列になります。

于 2012-05-14T07:16:27.557 に答える
0

これは常に jQuery のイベント ハンドラーに適用されます。これは、関数のメイン セレクターです。

于 2012-05-14T07:13:14.783 に答える
0

何をしたいかによる

選択時の幅を取得したい場合li

$(".packages:last > li").click(function(){
  sizeOfLi = $(this).width();
});

アマダンが言ったように、すべてのliサイズをマップします

var sizeOfAllLi = $(".packages:last > li").map(function() { return $(this).width(); })

このthis場合、キーワードは現在のliを参照します

于 2012-05-14T07:17:59.997 に答える