2012-06-06 6 views
1

j'ai donc ce code:jQuery: Diaporama pause sur vol stationnaire

$(document).ready(function(){ 
    $("#slideshow > div:gt(0)").hide(); 
    setInterval(function() { 
    $("#slideshow > div:first") 
      .fadeOut(1000) 
      .next() 
      .fadeIn(1000) 
      .end() 
      .appendTo("#slideshow"); 
}, 3000); 
}); 

qui fonctionne à 100% bien .. où dois-je ajouter la fonction .hover() pour le diaporama pour faire une pause sur le vol stationnaire ??

Répondre

5

Les méthodes setInterval() renvoient un intervalleID que vous pouvez utiliser pour effacer l'intervalle/le délai actuel en utilisant clearInterval().

Vous pouvez faire quelque chose comme ceci:

$(document).ready(function() { 

    var timer; 

    $("#slideshow > div:gt(0)").hide(); 

    $("#slideshow") 
     // when mouse enters, clear the timer if it has been set 
     .mouseenter(function() { 
      if (timer) { clearInterval(timer) } 
     }) 
     // when mouse goes out, start the slideshow 
     .mouseleave(function() { 
      timer = setInterval(function() { 
       $("#slideshow > div:first") 
        .fadeOut(1000) 
        .next() 
        .fadeIn(1000) 
        .end() 
        .appendTo("#slideshow"); 
      }, 3000); 
     }) 
     // trigger mouseleave for initial slideshow starting 
     .mouseleave(); 

});​ 

DEMO

+0

cloué !! merci beaucoup! =) – BDdL

+0

Salut! Comment l'utiliser si je veux seulement mettre en pause l'intervalle? Ne pas l'effacer et réinitialiser. – maverick

+0

Vous pouvez utiliser un booléen que vous avez défini sur False dans mouseenter. Dans 'mouseleave' vous pouvez le redéfinir sur' True', et dans 'setInterval', retourner directement si le booléen est' False'. –