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