4

嗨,我只是想知道是否可以使用这样的函数在 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];
});

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

4

3 回答 3

6

您可以使用$.map

var marginsLeft = $(ele).map(function() { 
    return parseInt($(this).css('margin-left'), 10);
}).get();

更新:正如@undefined 所指出的,如果您想要一个常规数组,您还应该调用.get结果。否则,您将拥有一个 jQuery 包装的数组。它类似于数组,因此可以在许多情况下用作数组,但在其他情况下则不能(特别是,它可能没有本机Array方法)。

此外,要将结果转换为您可以使用的数字parseInt(这将忽略字母并仅使用数字),请记住明确说明基数 (10)。

于 2012-12-22T11:55:21.813 回答
3

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

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

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

于 2012-12-22T11:58:04.007 回答
2

你可以css('margin-left')改用

于 2012-12-22T11:53:50.093 回答