嗨我只是想知道是否可以使用像这样的函数在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];
});
我不完全确定如何简化这一点,但我确信这是可能的:)提前感谢。
答案 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')
代替