javascript / jQuery匿名函数来填充数组

时间:2012-12-22 11:51:24

标签: javascript jquery

嗨我只是想知道是否可以使用像这样的函数在javascript中构建数组。我有一个变量,它使用$(ele).css('margin');获取一系列元素的边距。这将返回一个0px 0px 0px 0px字符串,其中我只希望left属性检查它是否已被动画-=

我可以做类似的功能,但我知道必须有更好的方法。这是我的例子:

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

我不完全确定如何简化这一点,但我确信这是可能的:)提前感谢。

3 个答案:

答案 0 :(得分:6)

您可以使用$.map

var marginsLeft = $(ele).map(function() { 
    return parseInt($(this).css('margin-left'), 10);
}).get();
如@undefined所指出的

更新:,如果你想要一个常规数组,你也应该在结果上调用.get。否则,你将拥有一个jQuery包装数组。它类似于数组,因此它可以在许多上下文中用作数组,但在其他上下文中则不能使用(特别是,它可能没有本地Array方法)。

此外,要将结果转换为数字,您可以使用parseInt(将忽略字母并仅使用数字),记住要显示基数(10)。

答案 1 :(得分:3)

查看docs for .each():回调函数的第一个参数是索引,可以将数组元素(DOM节点)作为第二个参数或this值进行访问。所以,使用

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

您也可以查看.map() method,但它会返回一个jQuery包装器对象而不是数组。

答案 2 :(得分:2)

您可以使用css('margin-left')代替