1

我想获得所有匹配元素的数组'position().left

但我不熟悉.map()

我知道如何通过使用a来获得它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 选择器中,使其成为 JQ 对象,而不是常规 DOM 对象:

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 回答