2011-04-06 72 views
1

喜 jcarousellite停止我有jcarousellite顯示一些圖像和滾動汽車頁面每5秒後,我想停止滾動,當我在旋轉木馬上點擊

這裏的任何圖像上單擊是什麼,我想做

$(document).ready(function() { 
    $('.slider_images').jCarouselLite({ 
     btnNext: "#next", 
     btnPrev: "#prev", 
     auto: 3000   
    }); 

    $(".slider_images img").click(function(){ 


     $('.slider_images').jCarouselLite({ 
      btnNext: "#next", 
      btnPrev: "#prev", 
      scroll: false  
     }); 


    }); 
}); 

回答

1

我很抱歉很遲纔回復。我的問題解決了。通過更改jcarousellite的pauseOnHover選項,我們可以非常輕鬆地實現停止點擊屬性。如果你看到pauseOnHover的實施,它是這樣的:

o.pauseOnHover ? ul.hover(function(){ paused == 1 }, function(){paused=0}) : ""; 

,我們可以通過改變ul.hover實現上點擊停止ul.click

o.pauseOnHover ? ul.click(function(){ paused == 1 }, function(){paused=0}) : ""; 

擁有美好的一天。

0

我閱讀代碼了一會兒,發現該自動滾動使用setTimeout實現:

if(o.auto) 
    setInterval(function() { 
     go(curr+o.scroll); 
    }, o.auto+o.speed); 

如果您第二次使用jCarouselLite,則不會停止setTimeout。要停止setTimout你必須調用window.clearTimeout

var timeoutId = window.setTimeout(function(){...}, 100); 

window.clearTimeout(timeoutId); 

這是不可能的,因爲的jCarousel的代碼沒有爲你提供這些timeoutId。您可以與開發人員交談或自行修改代碼。

0

我想不同意scheffield和/或找到一個使用這個插件的工作,但我必須同意他 - 它需要重寫源代碼來做你想做的事情。或者,您可能需要考慮jquery cycle。它已經有'暫停'和'停止'的方法。

0

這在文件的頂部添加

var timers = new Array(); 

變化

setInterval(function(){go(curr+o.scroll)},o.auto+o.speed) 

timers.push(new Array(this.className, setInterval(function(){go(curr+o.scroll)},o.auto+o.speed))); 

停止滾動

var classToStop = ".TestClass"; 

for(var i=0; i < timers.length; i++) 
{ 
    if("."+timers[i][0] == uploadifyClass) 
    window.clearInterval(timers[i][1]) 
} 
0

這將停止頁面上的所有輪播自動進行。我正在殺死所有在這裏使用超時的東西。這爲我工作:

$(".slider_images img").click(function(){ 
    var x = setTimeout(""); 
    for (var i = 0 ; i < x ; i++) 
    clearTimeout(i); 
} 
+1

這可能適用於大多數瀏覽器,但它使用未定義的行爲。返回的數字'setTimeout'的規範僅指定它必須是一個數字,它並不要求它是順序的。 – HoLyVieR 2011-10-30 14:16:15