2011-10-18 46 views
1

我有以下jQuery橫幅旋轉腳本,我想稍微改變一下,這樣即使用戶沒有點擊prev/next按鈕,橫幅也會每隔X秒旋轉一次。目前的代碼是在這裏:jquery image rotator

<script type="text/javascript"> 

    var active_banner_index = 0; 

    function banner_next(direction) { 
     var banners = $(".banner-content"); 
     if(banners.length) { 
      var curr = $(banners[active_banner_index]); 
      active_banner_index+=direction; 
      if(active_banner_index>=banners.length) 
       active_banner_index = 0; 
      if(active_banner_index<0) 
       active_banner_index = banners.length-1; 
      next = $(banners[active_banner_index]); 
      curr.fadeOut(1000, 
       function() { 
        next.fadeIn(500); 
       } 
       ); 
     }  
    } 

    $(document).ready(function() { 
     var tbl = $("#mega-hot-deal-666"); 
     var tag_left = $("#hot-deal-arrow-left"); 
     var tag_right = $("#hot-deal-arrow-right"); 

     var banners = $(".banner-content"); 
     if(banners.length) { 
      $(banners[0]).show(); 
     } 

     pos = tbl.position(); 
     tag_left.css('z-index',100); 
     tag_left.css({ 
          position: "absolute", 
       top: pos.top+67, left: pos.left-37, 
       cursor: "pointer" 
      }); 
     tag_right.css('z-index',6); 
     tag_right.css({ 
          position: "absolute", 
       top: pos.top+67, left: pos.left+tbl.width()-26, 
       cursor: "pointer" 
      }); 
    active_banner_index = 0; 
     tag_left.click(function(){ banner_next(-1); }); 
     tag_right.click(function(){ banner_next(1); }); 
    }); 

</script> 

我會得到什麼代碼,以便使橫幅自行旋轉,而無需等待用戶點擊按鈕添加?

+0

爲什麼不使用的jQuery插件週期?你想要的功能已經存在 – marissajmc

回答

2

您需要使用setInterval定期調用進度功能。當用戶懸停在橫幅上時,您也可能想要暫停它。下面的代碼,你將需要:

學習
$(function(){ 
    var delay = 4000, 
     int; 

    // Set interval to progress 
    int = setInterval(function(){ 
     banner_next(1); 
    }, delay); 

    // OPTIONAL: Pause when hovering over the banner 
    $(".banner-content").hover(function(){ 
     clearInterval(int); 
    }, function(){ 
     int = setInterval(function(){ 
      banner_next(1); 
     }, delay); 
    }); 
}); 

參考:window.setIntervalwindow.clearInterval

+0

我發現這種方法有時意味着一旦用戶離開該區域就會改變幻燈片,這可能有點不和諧。我建議將間隔設置爲變量,然後在mouseenter上清除並在mouseleave上重新設置。這樣,鼠標離開該區域後的延遲總是相同的。 – will

+0

@ will:Good call;更新。 –

+0

@ N Rohler:謝謝,我只是在我的下面添加了腳本,但沒有發生任何事情。我應該在某些事件上調用函數,也許在document.ready上? – bikey77