1

一致したすべての要素の配列を取得したい'position().left

しかし、私はよく知りません.map():

ただし、を使用して取得する方法を知ってloopいます:

     var arr = new Array();

     var b = $(".matchME").length;
     var a = 0;

     for(i=0; i< b; i++){
        var c = $(".matchME:eq("+ a+ ")").position().left;
        arr.push(c);
        a++;
     }

しかし、使用しようとすると間違ってしまいます.map():

var arr = $('.matchME').map(function(i,e) {
  return e.position().left;
}).get();

誰かが私が間違っている部分を説明し、正しい方法を提供してくれれば幸いです。

(または使用する以外の他のスマートな方法.map()

4

2 に答える 2

1

不足しているのは、 eをJQueryセレクターでラップして、通常のDOMオブジェクトではなくJQオブジェクトになるようにすることです。

var arr = $('.match').map(function(i,e) {
    return $(e).position().left;
});
于 2012-05-06T09:14:48.810 に答える
0

map()を正しい方法で使用していますeが、マッピング関数に渡される引数はjQueryオブジェクトであると想定しています。これは実際にはDOM要素であるため、position()メソッドをサポートしていません。

この問題は、次のように書くことで解決できます。

var arr = $(".matchME").map(function(i, e) {
    return $(e).position().left;
}).get();

また、便宜上、現在のDOM要素もにバインドされてthisいるため、次のように記述できます。

var arr = $(".matchME").map(function() {
    return $(this).position().left;
}).get();
于 2012-05-06T09:14:40.017 に答える