2010-08-23 10 views
4

J'ai construit un simple carrousel avec défilement gauche et droite. Maintenant, je veux faire défiler automatiquement toutes les 5 secondes. Voici mon code:jquery comment déclencher le même événement toutes les 5 secondes

function carousel(){ 
     $j('#carousel_ul li:first').before($j('#carousel_ul li:last')); 

     $j('#right_scroll img').click(function(){ 

      var item_width = $j('#carousel_ul li').outerWidth() + 10; 

      var left_indent = parseInt($j('#carousel_ul').css('left')) - item_width; 

      $j('#carousel_ul:not(:animated)').animate({'left' : left_indent},800, 'easeOutExpo',function(){ 

       $j('#carousel_ul li:last').after($j('#carousel_ul li:first')); 

       $j('#carousel_ul').css({'left' : '-750px'}); 
      }); 
     }); 

     $j('#left_scroll img').click(function(){ 

      var item_width = $j('#carousel_ul li').outerWidth() + 10; 

      var left_indent = parseInt($j('#carousel_ul').css('left')) + item_width; 

      $j('#carousel_ul:not(:animated)').animate({'left' : left_indent},800, 'easeOutExpo',function(){ 

      $j('#carousel_ul li:first').before($j('#carousel_ul li:last')); 

      $j('#carousel_ul').css({'left' : '-750px'}); 
      }); 

     }); 
} 

Comment puis-je y parvenir? Merci à l'avance :)

Mauro

Répondre

11

Vous pouvez utiliser setInterval. Regardez:

window.setInterval(event, 5000); 

et événement de fonction serait

function event() { 
$j("#right_scroll img").click(); 
} 

EDIT:

TKS @cris! setTimeout appelle une seule fois. J'ai changé pour setInterval.

Tks @bears! Maintenant, je passe une fonction à setInterval.

+0

setTimeout fera qu'une seule fois. setInterval appellera la fonction encore et encore et encore ... setInterval est meilleur pour cette situation. – Gabriel

+0

@gabriel - vous avez raison. Tks! – Topera

+1

* SVP * ne passez pas les chaînes à 'setInterval' et' setTimeout'! Passez une fonction: 'setInterval (event, 5000);' et setInterval (function() {$ j ("# right_scroll img"). Cliquez sur();}, 5000); ' –

12
var i = setInterval(carousel, 5000) 

Et pour l'arrêter plus tard:

clearInterval(i); 
+0

Cris, appel 'carousel' ne liera que les événements. Vous devez appeler défilement vers la droite ou vers la gauche. – Topera