2013-07-14 42 views
0

我使用jQuery創建一個簡單的幻燈片放映。加載圖像時間不一致(jQuery/PHP/HTML)

我在home.php文件中有一個幻燈片。我有一個菜單欄。當我在菜單中單擊home時,我在主頁的內容div中加載了home.php。幻燈片和菜單都沒有問題。組合後,它們在第一次加載時工作良好。然而,當加載多次時,時間間隔並不完美,並且在不均勻的負載模式下工作。 這是我在home.php

<script> 
$(function(){ 
$('.fadein img:gt(0)').hide(); 
setInterval(function(){$('.fadein :first-child').fadeOut().next('img').fadeIn().end().appendTo('.fadein');}, 3000); 
}); 
</script> 

和menu.php

<li><a href=# onclick="$('#content').load('home.php') ;return false">HOME</a></li> 
<li><a href=# onclick="$('#content').load('buyitems.php') ;return false">BUY</a></li> 
<li><a href=# onclick="$('#content').load('discuss.php') ;return false">DISCUSS</a></li> 
<li><a href=# onclick="$('#content').load('locationnear.php') ;return false">NEAR YOU</a></li> 

代碼如果您需要詳細資料,讓我知道。

問題 他們單獨工作。當我多次在菜單欄上點擊回家時,時間的淡入並不是一成不變的。一些圖像加載更快,另一些更慢。

回答

1

延遲動畫執行的原因可能是jQuery動畫隊列。

fadeOut這樣的新動畫已排好隊列,並等待同一元素上的以前的動畫完成。

要取消當前隊列中您可以使用jQuery.stop()stop - jQuery API

說明:停止在匹配元素當前正在運行的動畫。

所以你的情況,這可能是這樣的:

$('.fadein :first-child').stop(true, true).fadeOut() 

或者你禁用排隊這個動畫fadeOut - jQuery API

布爾值,指示是否將動畫的效果隊列。如果爲false,則動畫將立即開始。

$('.fadein :first-child').fadeOut({ queue : false }) 

編輯

每一次點擊你的代碼開始一個新的setInterval這也將動畫添加到隊列中,所以也許清除INTERVALL將幫助:

if (window.currenTimer) { 
    clearInterval(window.currentTimer); 
} 
window.currentTimer = setInterval(function(){ 
    $('.fadein :first-child') 
    .stop(true, true) 
    .fadeOut() 
    .next('img') 
    .stop(true, true) 
    .fadeIn() 
    .end() 
    .appendTo('.fadein'); 
}, 3000); 
+0

感謝您的回覆。它實際上變得更快而不是更慢。在您的建議後,我修改了:「

  • HOME
  • 」,這沒有奏效。應該在哪裏添加代碼。我最初在「$(function(){'。fadein img:gt(0)')。hide();」之前添加它,所以不得不嘗試添加鏈接。 。任何建議。 – user2178841

    +0

    你可以請嘗試一步一步解釋應該怎麼做? – jantimon

    +0

    沒什麼特別的!我會稍微修改一下命名的清晰度,我有三個.php文件,一個菜單。PHP,一個index.php,一個slideshow.php該菜單包含幻燈片作爲一個選項。 slideshow.php包含幻燈片。該索引包含用於菜單的另一個div和用於容器div的另一個div。當在索引頁面中單擊幻燈片時,我想在容器div中加載slideshow.php。到目前爲止,一切都很好。當我加載頁面時,它工作。當我在菜單中單擊幻燈片時,幻燈片將以動畫播放的形式加載到div中。問題是:當我在菜單中單擊幻燈片幾次,動畫... – user2178841