jQuery问题:如何循环遍历数组

3

我有一个像这样的数组:

var gridArray = [ 1,2,0,1,2,3,2,1,2,3,4,4,3,2,2,2,0 ]

我希望有一个像这样的jQuery each() 函数:

$('li.node').each(function() {
                loop through the array
                            var rndTile = the current array digit

                $(this).css({ 'background-image': 'url(images/'+arrayDigit+'.jpg' });
            });

我该如何实现这个功能?

不要使用for..in.each()循环遍历数组! - jAndy
5个回答

2

您需要向每个回调传递参数。

$(gridArray).each(function (i, val) {
  // i is the index in this loop.
  // val is the value at gridArray[i] in this loop.
});

如果你要使用.each()来迭代你的数组,你不需要创建一个jQuery对象。只需这样做$.each(gridArray, function(i,val) {...}); - user113716

0
假设每个数组成员对应一个 <li> 元素:
$('li.node').each(function(i) {
  var rndTile = gridArray[i];
  $(this).css({ 'background-image': 'url(images/'+rndTile+'.jpg' });
});

0
$('li.node').each(function(index) {
    var rndTile = gridArray[index % gridArray.length];
    $(this).css({ 'background-image': 'url(images/' + rndTile + '.jpg' });
});

0

使用for in循环或更糟糕的是jQuery的.each()循环数组通常是一个不好的想法。像这样循环意味着有很多不必要的开销。

只有在不知道要处理多少项时(这实际上意味着只用于对象)才使用for..in.each()

使用普通的for循环来迭代数组。

for(var n = 0, len = gridArray.length; n < len; n++){
}

不是要打击或贬低所有热衷于网页开发的人,但请,请在学习库(如jQuery、MooTools、Dojo或Prototype)之前先学习JavaScript!这将使您成为更好的开发人员,您的代码将更快/更好! - xj9
@indieinvader:那个评论跟我的帖子没有关系吧? :p - jAndy
我猜我的话有点脱离上下文了,我的意思是这应该很明显。但是因为大多数新的JS开发人员不学习语言,他们学习jQuery等库,结果无意中编写了糟糕的代码,或者更糟糕的是,当他们发现jQuery !== JavaScript时感到困惑!简而言之:你是对的,for.each()更好。 - xj9

0

查看jQuery文档以获取jQuery.each的相关信息。函数签名如下:

jQuery.each( collection, callback(indexInArray, valueOfElement) )

我不确定你想要实现什么,所以很难给出具体的示例,但这应该能帮助你入门。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接