如何setTimeout延迟.each循环

时间:2013-04-16 20:54:11

标签: jquery

有没有办法延迟显示这些图像。提前谢谢。

  $.each(people, function(i, data){

            if(this.dead == true){
                $('#item7').prepend(' <span style="position:relative; top: 7px;"><img src="images/alive.png"/> </span> ');
                }else if(this.dead == false){
                    $('#item7').prepend(' <span style="position:relative; top: 7px;"><img src="images/alive1.png"/> </span> ');
                }

    });

3 个答案:

答案 0 :(得分:1)

是的,有办法。事实上,有很多方法。

这是我可能会使用的那个:

$.each(people, function(i, data) {
    var src = this.dead ? 'images/alive.png' : 'images/alive1.png';
    $('<span style="position:relative; top: 7px; display: none;">')
               .append($('<img>', { src: src }))
               .prependTo('#item7')
               .delay(i * 1000)
               .show('fast');
});

确保元素最初不可见(display: none),然后使用jQuery动画延迟对.show()调用进行排队。

答案 1 :(得分:0)

使用setTimeout来延迟它。 那些== true和== false操作是什么? 如果你想确保你的死属性为假或真,请与===比较,否则,if()就足够了。

$.each(people, function(i, data) {
    setTimeout(function() {
        $('#item7').prepend($('<span style="position:relative; top: 7px;">').html($('<img/>', { src : (this.dead ? "images/alive.png" : "images/alive1.png") })));
    }, i * 500);
});

在此处观看示例:http://jsfiddle.net/cLhvf/

答案 2 :(得分:0)

这取决于你的意思。

var delay = 500; (function(elements,index){  elements [index]; //做你想做的事。  setTimeout(function(){arguments.calle(elements,index + 1);},delay); })(人,0)

$。each(people,function(i,data){  var self = this;  setTimeout(function(){   //在这做任何你想做的事  },延迟); });

我认为延迟不适用于此。我可能是错的

所有代码都未经过测试。