使用JQuery循环数组

时间:2014-12-22 16:07:07

标签: javascript jquery arrays

我有一个小组用Jquery迭代一个数组。我有一个数组,我希望数组中的每个项目都淡入淡出(并在淡出时切换到下一个项目)。我可以让它循环适当的次数,但for循环总是显示最后一个变量,而不是每个变量。

var x = [1,2,3,4,5];

$("#test").text("test");

var y = 0;

for(var i = 0; i<x.length;i++){
   $("#test").delay(1000).animate({opacity:'0'},function(){
       $(this).text(i)
   }).delay(1000).animate({opacity:'1'});
}

所以,p标签这指的是&#34; text&#34;然后闪现&#39; 5&#39;五次而不是计数。我认为延迟会起作用,但for循环结束并且不等待jquery完成。

2 个答案:

答案 0 :(得分:1)

创建一个闭包

for (var i = 0; i < x.length; i++) {
   $("#test").delay(1000).animate({ opacity: '0' }, (function(i) {
       return function() { $(this).text(i); }
   })(i)).delay(1000).animate({ opacity: '1' });
}

您正在创建一个自执行函数,该函数在其上下文中存储了i,然后返回一个函数,该函数由于创建了闭包而也可以访问i变量。

答案 1 :(得分:1)

我猜你也可以用$ .each实现这个:

var x = [1,2,3,4,5];
$("#test").text("test");
$.each(x, function(i) {
    $("#test").delay(1000).animate({opacity:'0'},function(){
        $(this).text(x[i])
    }).delay(1000).animate({opacity:'1'});
});
相关问题