4

こんにちは、そのような関数を使用して JavaScript で配列を作成できるかどうか疑問に思っていました。を使用して一連の要素のマージンを取得する変数があります$(ele).css('margin');0px 0px 0px 0pxこれは、左のプロパティが左にアニメーション化されているかどうかを確認するだけの場所の文字列を返します-=

同様の機能を実行できますが、もっと良い方法があるはずです。これが私の例です:

var marginsLeft = new array();
$(ele).each(function(i){
    var r = $(i).css('margin').split(" ");
    marginsLeft[i]=r[3];
});

これを単純化する方法は完全にはわかりませんが、可能だと確信しています:)事前に感謝します。

4

3 に答える 3

6

使用できます$.map

var marginsLeft = $(ele).map(function() { 
    return parseInt($(this).css('margin-left'), 10);
}).get();

更新: @undefined で指摘されているように、通常の配列が必要な場合は.get、結果も呼び出す必要があります。そうしないと、jQuery でラップされた配列になります。これは配列に似ているため、多くのコンテキストで配列として使用できますが、他のコンテキストでは使用できません (特に、ネイティブArrayメソッドがない場合があります)。

また、結果を使用できる数値に変換するにはparseInt(文字を無視して数字のみを使用します)、基数 (10) を明示することを忘れないでください。

于 2012-12-22T11:55:21.813 に答える
3

ドキュメントをご覧.each()ください: コールバック関数の最初のパラメーターはインデックスです。配列要素 (DOM ノード) は、2 番目のパラメーターまたはthis値としてアクセスできます。だから、使う

var marginsLeft = []; // literal shortcut for "new Array()"
$(ele).each(function(i, el){
    marginsLeft[i] = $(el).css('margin-left');
});

.map()methodもご覧になるかもしれませんが、これは配列ではなく jQuery ラッパー オブジェクトを返します。

于 2012-12-22T11:58:04.007 に答える
2

css('margin-left')代わりに使用できます

于 2012-12-22T11:53:50.093 に答える