2010-10-01 60 views
0

更新:好吧,我看到,我可以在計時器的功能中包括每個attr替換。這意味着我做了五次;每個圖形一次。但是,有沒有更乾淨的方法來做到這一點?謝謝「排隊」非動畫屬性:attr

好吧,所以我有五個不同的圖像,我想替換src。但是,我希望每個順序..替換第一個,然後第二個等。

因爲我更改屬性源,動畫隊列將不會幫助。

我試過簡單的定時器插件,並把它放在一個函數中,然後在每個attr替換之後調用該函數,但是所有attr在函數調用之前發生。

然後,我把定時器函數,attr函數替換成函數裏面所有定時器函數的調用,加載文件然後調用,但是attr發生一次一次函數調用。

所以,這裏是我試過的最後一件事解釋略高於:

$(document).ready(function() { 
function holdIt(){ 
    myTimer = $.timer(2000,function(){ 
    alert("yes"); 
    }); 
}; 
function doMe() { 
$('#visit').attr('src', 'images/visitGrow.jpg'); 
holdIt(); 
$('#real').attr('src', 'images/realGrow.jpg'); 
holdIt(); 
$('#life').attr('src', 'images/lifeGrow.jpg'); 
holdIt(); 
$('#retirement').attr('src', 'images/retirementGrow.jpg'); 
holdIt(); 
$('#center').attr('src', 'images/centerGrow.jpg'); 
}; 

doMe(); 
}); 
</script> 

我知道我失去了一些東西,因爲它有很容易完成,但我沒有它。任何指針? PS ...我爲計時器使用簡單的插件。另外,我應該注意,我只是在每個attr替換後尋找一個暫停,以便在alert('yes');是的,我以爲我只是返回false或null;管他呢。

回答

1
(function() { 
    var items = $("#visit, #real, #life, #retirement, #center"); 
    var len = items.size(); 
    var urls = ["images/visitGrow.jpg", "images/realGrow.jpg", .........]; 
    var i = 0; 

    function step() { 
     items.eq(i).attr("src", urls[i]); 
     i += 1; 
     if (i >= len) { 
      return; 
     } 
     setTimeout(step, 2000); 
    } 

    step(); 
})(); 

者均基於自執行包裝函數是在這裏建立一個本地範圍,這樣你就不會polute全局命名空間...

0

你可以使用一個簡單的時間間隔,就像這樣:

$(function() { 
    var imgs = ["visit", "real", "life", "retirement", "center"], i=0, 
    timer = setInterval(function() { 
    $("#" + imgs[i]).attr("src", "images/"+imgs[i]+"Grow.jpg"); 
    if(i++ == imgs.length) clearInterval(timer); 
    }, 2000); 
}); 

這利用了您的圖像網址有一個約定,所以我們只是每2秒鐘通過陣列,然後到達的區間不會再次觸發。

+0

感謝你們倆!好東西 – 2010-10-01 20:55:30