2010-10-21 57 views
0

我想要一個腳本使用jQuery在一個div內淡入和淡出圖像。jQuery隨機衰落圖像(從兄弟姐妹)在隨機div(具體類)

我用下面的代碼(從http://jonraasch.com/blog/a-simple-jquery-slideshow):

function slideSwitch() { 

var $active = $('div.box1 img.active'); 

if ($active.length == 0) $active = $('div.box1 img:last'); 

    var $sibs = $active.siblings('img'); 
    var rndNum = Math.floor(Math.random() * $sibs.length); 
    var $next = $($sibs[ rndNum ]); 


$active.addClass('last-active'); 

$next.css({opacity: 0.0}) 
    .addClass('active') 
    .animate({opacity: 1.0}, 1000, function() { 
     $active.removeClass('active last-active'); 
    }); 
} 

$(function() { 
setInterval("slideSwitch()", 5000); 
}); 

這個腳本目前運作良好,並從來自div.box1內的兄弟姐妹圖像隨機選擇。

除此之外,我決定我也希望它首先從頁面中選擇一個具有類「boxgrid」(而不是像.box1這樣的特定類)的隨機div(有6個容器div。 boxgrid類應用),它們是圖像的容器。

即我首先要隨機選擇一個.boxgrid div,然後在該選定div內繼續,並根據上述腳本選擇一個隨機圖像並淡入到下一個。下面是我使用的XHTML:

<div class="boxgrid box1"> 
          <img src="img/homepage/box1-1.png" class="active"/> 
          <img src="img/homepage/box1-2.png"/> 
          <div class="boxcaption"> 
           <h3>Header</h3> 
           <p>Text goes here...</p> 
          </div> 

         </div> 

嘗試此我自己(我不是很明顯程序員 - 但我想)我已經拿出了以下內容:

function slideSwitch() { 

var $randbox = $('div.boxgrid').siblings(); 
var rndBox = Math.floor(Math.random() * $randbox.length); 


var $active = $($randbox[ rndBox ]); 

if ($active.length == 0) $active = $('img:last'); 

    var $sibs = $active.siblings('img'); 
    var rndNum = Math.floor(Math.random() * $sibs.length); 
    var $next = $($sibs[ rndNum ]); 


$active.addClass('last-active'); 

$next.css({opacity: 0.0}) 
    .addClass('active') 
    .animate({opacity: 1.0}, 1000, function() { 
     $active.removeClass('active last-active'); 
    }); 
} 

$(function() { 
setInterval("slideSwitch()", 5000); 
}); 

我我在尋找一些幫助,因爲我努力讓它選擇一個隨機的div.boxgrid,然後隨着它在原始腳本中隨機淡入圖像。我關門了嗎?

任何幫助將不勝感激。

謝謝。

回答

0

首先你應該使用setTimeout而不是setInterval在我看來。

其次,jQuery的有一個上拉和下滑的方法,你可以使用將做同樣的事情。

第三,您可以使用eq方法來選擇索引框。

例如$( '框:EQ(' + RANDOM_NUMBER + ')')了slideDown();

並使用setTimeout來做slideUp

+0

感謝您的回覆。我查了一下上下滑動的方法,他們沒有做我所需要的 - 淡入淡出。 eq方法看起來很有趣,但我真的不知道如何使用它來從頁面上的「.boxgrid」類中選擇一個隨機的div。 – 2010-10-22 11:15:20

+0

那麼你知道如何生成一個隨機數:)所以使用它,然後在jq中使用.length來查找選擇了多少。也在jquery中有一個fadeIn fadeOut選項:) – Val 2010-10-23 02:53:12

+0

好的...感謝您的輸入 - 不知何故,我想出了它 - 也許我沒有我想象的那麼糟糕 - 所以對於任何需要幫助的人: – 2010-10-23 12:10:32