jQuery:返回所有匹配元素的position()。left作为数组

时间:2012-05-06 09:10:13

标签: jquery arrays

我想获得所有匹配元素'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()

以外的其他智能方法

2 个答案:

答案 0 :(得分:1)

您缺少的是将 e 包装在JQuery选择器中,使其成为JQ对象,而不是常规DOM对象:

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

答案 1 :(得分: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();