2012-07-10 56 views
0

我有一個我正在開發的網站,並且在主頁上有多個Div。我在標有right_bar2的頁面右側有一個div,我希望它每5-10秒更換一次。整個div只是一個鏈接的圖像。基本上我認爲最簡單的方法就是創建一個帶有一堆隱藏div的div,然後可能會有一些javascript一次取消隱藏一個div,然後再隱藏一次並取消隱藏另一個div。但是我不確定做到這一點的最佳方式。我看了一堆示例,無法正確使用它。更改Div的內容以循環訪問AD或內容或任何

感謝您的任何意見;)

的jsfiddle例子將是巨大的!

我試過類似http://jsfiddle.net/VENLh/4/的東西,但是在我的rails環境/設置中,它打破了許多事情,所以我希望更清潔和簡單的東西。

回答

0

我在this fiddle中對它進行了一些清理,但是如果您說原件在原始環境中打破了多件事情,這可能無法解決它們。它有什麼特別的突破?

我清理的是爲了避免需要保留JS的DIV的手工計數或擔心他們的ID。代碼很簡單:

$(function() { 
    var $divs = $('div', '#container'), 
     total = $divs.length, 
     counter = 0, 

     showDiv = function() { 
      $divs.stop().hide(); 
      $($divs[counter]).show('fast'); 
      counter = (conter + 1) % total; 
      setTimeout(showDiv, 3000); 
     }; 
    $divs.hide(); 
    showDiv(); 
}); 

我沒有執行一個可能應該完成的優化。您可能應該在每個DIV上緩存jQuery選擇器的結果。使用jQuery map聲明很容易,但我不想在這裏混濁水域。

+0

在[另一個小提琴]中執行該優化(http://jsfiddle.net/VENLh/7/)。這可以避免在每次迭代中調用jQuery構造函數。 – 2012-07-10 03:25:20

+0

這工作,謝謝!...任何方式,使其可以讓用戶可以手動選擇div,如果他們不想等待循環滾動通過? – user1513507 2012-07-10 15:48:56

+0

當然可以。但是這需要更多的工作。您需要存儲'setTimeout'調用的結果,以便以後可以清除它。你將不得不暴露額外的手段來調用'showDiv',並創建一個向後滾動的類似函數,或者傳遞一個方向參數給這個函數,或者傳入一個索引參數給這個函數來確定顯示哪個DIV。這些都不是特別困難,但這都是真正的工作。 – 2012-07-10 17:21:14

0

我在這種情況下可以看到的唯一問題是如果您打算使用沉重的圖像,則可能需要一些時間才能加載。由於第一次顯示圖像時會開始加載圖像。所以對於這個我會說你應該保持不透明0並在頁面加載時加載圖像。

也可以通過使用不透明度來消除延遲,您可以通過使用不透明度來消除一個div被隱藏而其他可見的延遲。將100%的不透明度從100%減少到0%,並且將其他從0%增加到100%。