2012-04-17 56 views
2

我試圖讓jQuery Cycle只在幻燈片懸停時運行(這與它們內置的功能相反)。在懸停時使用jQuery循環僅

下面是我在哪裏:http://jsfiddle.net/zSBMU/

$(document).ready(function() { 

$('.slideshow').hover(
    function() { 
     $(this).cycle({ 
      fx:  'fade', 
      speed: 600, 
      timeout: 300, 
      pause: 0 
     }); 
    }, 
    function(){ 
     $(this).cycle('stop'); 
    } 
).trigger('hover'); 

});

第一次你徘徊時,它很棒,工作正常。但是,如果您嘗試再次懸停同一個,則只會經歷一次淡出而不是再次循環。

任何想法?

請忽略一些粗糙的代碼,在這裏使用一個非常古老的主題,試圖清理它!

+0

請在這裏發佈代碼。這是關於幫助你現在和其他人從現在起2年......在你的小提琴走了之後。 – 2012-04-17 21:09:54

回答

2

您正在使用「停止」並重新創建循環,因此您要在該對象上添加幾個循環。

你必須使用「暫停」和「恢復」。

例波紋管:

var cycleConfigured = false; 
$(document).ready(function() { 

    $('.slideshow').hover(
     function() { 
      if(cycleConfigured) 
       $(this).cycle('resume'); 
      else 
      { 
       $(this).cycle({ 
        fx:  'fade', 
        speed: 600, 
        timeout: 300, 
        pause: 0 
       }); 
       cycleConfigured = true; 
      } 
     }, 
     function(){ 
      $(this).cycle('pause'); 
     } 
    ).trigger('hover'); 

});​ 

變量cycleConfigured將被用來控制我們的週期插件,以檢查它是否已經被實例化。 在替代你可以$(document).ready()創建它,然後暫停它是這樣的:

$(document).ready(function() { 
    // configure the cycle plugin 
    $('.slideshow').cycle({ 
     fx:  'fade', 
     speed: 600, 
     timeout: 300, 
     pause: 0 
    }); 
    $('.slideshow').cycle('pause'); // pause it right away. 

    $('.slideshow').hover(
     function() { 
       $(this).cycle('resume'); // start playing. 
     }, 
     function(){ 
      $(this).cycle('pause'); // pause the slideshow. 
     } 
    ).trigger('hover'); 

});​ 

你需要做的一切都是在使用$(this).cycle('pause')上並$(this).cycle('resume')

任何事情都讓我知道。

+0

啊,是的,我太傻了,謝謝一堆! – graygilmore 2012-04-17 22:10:29

+0

我唯一的問題是,如果我在一個頁面上有多個幻燈片,我不確定這裏是否會出現衝突? – graygilmore 2012-04-17 22:14:40

+0

你好!:)如果你在'$(document).ready()'上配置它們都不會有任何問題,現在問題就是「資源」的用法,循環會給DOM添加一些元素。唯一的**「解決方案」**將殺死週期並重置它,但是那樣你就不會擁有你正在尋找的動畫。 您期望使用多少個週期和圖像? – 2012-04-17 22:18:49