2012-01-04 61 views
0

我有使用下面的函數使用jquery自動化滑塊?

$(document).ready(function(){ 
$('#button a').click(function(){ 
    var integer = $(this).attr('rel'); 
    $('#myslide .cover').animate({left:-720*(parseInt(integer)-1)}) 
    $('#button a').each(function(){ 
    $(this).removeClass('active'); 
     if($(this).hasClass('button'+integer)){ 
      $(this).addClass('active')} 
    }); 
}); 
}); 

是否可以自動完成這個使用jQuery的一個按鈕的點擊在多張幻燈片圖像滑塊?


剛剛發現這個奧菱不確定我怎麼會去實現它....

setInterval(function() { 
     // Do something every 2 seconds 
}, 2000); 
+0

你通過自動化是什麼意思? – elijah 2012-01-04 22:14:48

+0

所以說3秒後,它會自動滑動到下一張幻燈片 – Liam 2012-01-04 22:16:16

+0

什麼你想在這裏自動化? – 2012-01-04 22:16:25

回答

2

要點擊一個按鈕後,動畫圖像,你可以使用的setInterval。我之前的例子使用setTimeout,即使在你提到setInterval之後。哎呦。這應該是更清潔。

評論應該描述發生了什麼。

請注意,按鈕按下時調用setInterval。每次按下按鈕,它都會啓動另一個實例。這個問題的解決方案歸結爲您想要使用的編碼邏輯。嘗試使用clearInterval(),如果您必須以可以多次調用它的方式進行設置。

$(function() { 
    //Click our link 
    $("a").click(function() { 
     animateOurImage(); 
     setInterval(function() { animateOurImage(); }, 3000); 
     //Be sure you account for the animation's duration in setInterval. 
    }); 
}); 

function animateOurImage() { 
    // We need the .each to access the image with $(this) 
    $('.image').animate({ 
     left: "-=120" //relative to current position 
    }, 1000); //Duration 
} 

下面是一個例子小提琴:http://jsfiddle.net/Yjhwm/

+0

請注意,如果多個.cover圖像生成動畫,則會啓動多個定時器。您可以設置.animate()作用域的變量* outside *,並立即設置clearTimeout(variable),然後設置variable = setTimeout()。這將使一次只有一個活動超時。 或者,只需在函數的外部調用setTimeout即可。 – 2012-01-04 22:25:55

+0

這似乎並沒有模仿按鈕點擊出於某種原因 – Liam 2012-01-04 22:31:09

+0

嘗試我的編輯,請記住,將動畫完全移到新的功能可能更實用,只需在click事件中調用動畫和setTimeout即可。 clearTimeout()setTimeout()可能不是最乾淨的做事方式。 – 2012-01-04 22:52:12

2

第一,使執行該動畫成一流的函數的函數(即給它一個名字並將其移出的點擊()):

function animate() {...} 

然後與點擊處理程序相關聯

然後,使用的setInterval()或setTimeout的()指定超時後執行該功能:

setTimeout(animate, 3000);