0
我有一組頁面充當幻燈片,不同的元素被定時顯示爲錄製的配音來讀取文本。setTimeout使用jquery load()時重疊
我在使用load()刷新下一個「幻燈片」區域時遇到了麻煩。我使用setTimeout來控制顯示。我的問題是,第二頁正在使用第一頁中找到的setTimeout定時。我需要清除TimeTimeout嗎?
第1名的腳本:
var actions = [
{ time : 4, action : function() { $('#slidePhoto').animate({width: $('#slidePhoto img').width()/1.5}, 2000).addClass('side-photo') } },
{ time : 8, action : function() { $('#slideEl2').fadeIn('slow') } },
{ time : 17, action : function() { $('#slideEl3').fadeIn('slow') } },
{ time : 24, action : function() { $('#slide-container').hide('slide', { direction: "left"}, 1000, function() {
$('#slide-container').load('introduction2.php', function() {
$('#slide-container').fadeIn('slow');
});
}) } }
];
$(document).ready(function() {
for(var i in actions) {
setTimeout(actions[i].action, actions[i].time * 1000);
}
});
第2頁的腳本:
var actions = [
{ time : 10, action : function() { $('#slidePhoto').animate({width: $('#slidePhoto img').width()/1.5}, 2000).addClass('side-photo') } },
{ time : 16, action : function() { $('#slideEl2').fadeIn('slow') } },
{ time : 29, action : function() { $('#slideEl3').fadeIn('slow') } },
{ time : 40, action : function() { $('#slide-container').hide('slide', { direction: "left"}, 1000, function() {
$('#slide-container').load('introduction3.php', function() {
$('#slide-container').fadeIn('slow');
});
}) } }
];
$(document).ready(function() {
for(var i in actions) {
setTimeout(actions[i].action, actions[i].time * 1000);
}
});
這些頁面的主容器頁面上的區域內加載。我相信我可以通過在每一頁上使用不同的ID來解決這個問題,但我猜測這有些簡單。
看來你確實應該使用clearTimeout(使用由setTimeout函數返回的計時器ID)。每次操作存儲一個定時器ID並不難,所以我認爲這對你來說是最簡單的。 –
@dystroy - 謝謝。我一直無法使clearTimeout工作。你能舉個例子嗎? – Voodoo
我添加了一個答案來詳細說明clearTimeout的用法。 –