2010-08-13 11 views
2

J'ai un diaporama qui fonctionne sur un clic d'un bouton comme ceci: ">". Le bouton est une travée avec l'identifiant "slideshowRight".Réglage d'une minuterie dans jQuery/javascript

Est-il possible de définir un temporisateur qui toutes les 5 secondes clique littéralement sur le bouton slideshowRight et s'arrête lorsque la souris survole les boutons et redémarre lorsque la souris ne survole pas sur eux?

Le hover-stop n'est pas aussi crucial que le clic tous les 5 secondes. Je sais que jQuery a une fonction .click().

Merci, Amit

Répondre

0

devrait-il pas être appelé slideshowLeft? Eh bien,

Si vous avez un bouton, puis:

slideshowRight.click(function() { 
    // do some stuff 
}); 

vous pouvez réellement déclencher un clic de ce bouton par le script:

mais je dirais que ce serait plus propre à factoriser simplement la fonction:

slideshowRight.click(slideshowRight_click); 

function slideshowRight_click() { 
    // do some stuff 
} 

sur cette base, vous pouvez définir un intervalle sur les points suivants:

var isHover = false; 
setInterval(function() { 

    if(isHover) return; // do nothing! 

    slideshowRight_click(); 

}, 5000); // every 5 sec 

Et vous pouvez changer la valeur de isHover comme ceci:

slideshowRight.hover(function() { isHover = !isHover; }); 

Hover sera appelée une fois sur le vol stationnaire, et encore une fois lorsque l'utilisateur cesse de planer sur le bouton, et sa valeur est définie à ce qu'il n'était pas en ce moment.

+0

Haha vous avez totalement raison. Eh bien, je voulais écrire ">". Ma faute. – Amit

1

contrôle les fonctions setTimeout and setinterval. quelque chose comme ça devrait cliquer jamais 5 secondes:

setInterval(function(){ 
    $("myButton").click(); 
}, 5000); 

Vous pouvez alors effacer et commencer l'intervalle lorsque l'utilisateur passe et, en utilisant ce qui précède et la fonction clearInterval

+0

J'ai beaucoup aimé votre chemin parce que je l'ai compris beaucoup plus facilement que David. Cependant le clearInterval() ne fonctionnait pas pour moi et la façon de David a fonctionné. Désolé – Amit

+0

@Amit: clear-interval devrait certainement fonctionner aussi bien. vous devriez faire quelque chose comme ceci: 'var slideshowInterval = null; function start() {slideshowInterval = window.setInterval (function() {myButton.click();}, 5000); } myButton.hover (function() {/ * sur hover */window.clearInterval (slideshowInterval);}, function() {/ * stop hover */start();}); start(); ' –

+0

@Amit: en fait, voici les deux versions, côte à côte, à comparer: http://jsbin.com/emuxa3/edit La raison pour laquelle je ne recommande pas d'appeler' .click() ' (ou 'trigger ('click')') est que vous voudrez peut-être assigner un autre code à l'écouteur de clic de ce bouton, pour faire quelque chose de différent, et vous ne voudriez pas l'invoquer tous les 5 s. . vous voulez que l'intervalle du diaporama change d'image (ou ce qu'il fait) et * par coïncidence * c'est la même chose que le bouton fait. Si le comportement du bouton change, cela ne signifie pas que le comportement de votre intervalle devrait l'être. –