2011-11-25 32 views
1

我遇到了一個div的問題,它會淡入HTML/jQuery演示文稿幻燈片12中的頁面。jQuery Loop函數看起來沒有工作

運行下面的代碼時,div會淡入,但不會跟隨稱爲循環的函數並重復其自身。它應該褪去50%的不透明度並在連續循環中回覆到100%。

我相當有信心這個問題是與我的語法,但我還沒有運氣。

的jQuery:

// if slide 12 
if (index == 11) { 
    $("#prev").show(); 
    $("#next").show(); 
    $("#p12-1").delay(2000).fadeIn("slow", function() { 
     function loop() { 
      $("#p12-1").delay(200).fadeTo("slow", 0.5, function() { 
       $("#p12-1").delay(200).fadeTo("slow", 1, loop); 
      }); 
     }; 
    }); 
    createParticles($("#main").offset().left + 200, $("#main").offset().top + 100, 4000); 
} 

HTML:

<div class="main-slide main-slide-12" style="display:none;"> 
<div id="p12-1" style="display:none;"><img src="images/p12-1.png" /></div> 
<div style="display:none;" id="p12-2"><img src="images/p12-2.png" /></div> 
<div style="display:none;" id="p12-3"><img src="images/p12-3.png" /></div> 

回答

3

變化:

$("#p12-1").delay(2000).fadeIn("slow", function() { 
    function loop() { 
     $("#p12-1").delay(200).fadeTo("slow", 0.5, function() { 
      $("#p12-1").delay(200).fadeTo("slow", 1, loop); 
     }); 
    }; 
}); 

到:

$("#p12-1").delay(2000).fadeIn("slow", function() { 
    (function loop() { 
     $("#p12-1").delay(200).fadeTo("slow", 0.5, function() { 
      $("#p12-1").delay(200).fadeTo("slow", 1, loop); 
     }); 
    }()); 
}); 

小更新

通常不需要使用oncomplete-callback在相同元素上對動畫進行排隊。這就是說,你也可以使用這樣的代碼,具有相同的效果(注意,你可以鏈你想要的動畫和延遲,並且只使用fade作爲最後的完成回調從頭再來):

(function fade() { 
    $('#p12-1') 
    .delay(2000) 
    .fadeIn('slow') 
    .delay(2000) 
    .fadeOut('slow', fade); 
}()); 

演示:http://jsfiddle.net/TPBFt/

+0

太棒了,非常感謝一堆! – Undefined

0

更換

$("#p12-1").delay(2000).fadeIn("slow", function() { 
    function loop() { 
     $("#p12-1").delay(200).fadeTo("slow", 0.5, function() { 
      $("#p12-1").delay(200).fadeTo("slow", 1, loop); 
     }); 
    }; 
}); 

$("#p12-1").delay(2000).fadeIn("slow", function() { 
    function loop() { 
     $("#p12-1").delay(200).fadeTo("slow", 0.5, function() { 
      $("#p12-1").delay(200).fadeTo("slow", 1, loop); 
     }); 
    } 
    loop(); 
}); 

因爲AFAIK某些瀏覽器不喜歡命名的函數表達式,所以我沒有像@Yoshi那樣使用函數表達式。

+0

你可能是這個意思:http://kangax.github.com/nfe/#jscript-bugs :) – Yoshi

相關問題