IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Stopper un delay sur accordion Mootools [MooTools]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Par défaut Stopper un delay sur accordion Mootools
    Bien le bonjour à tous.

    Je me casse la tête comme un fou sur un script mootools.
    Le bien connu accordion mootools.

    Demo ici : http://demos.mootools.net/Accordion

    Tout fonctionne bien avec le code ci-dessous (j'ai épuré le code et laissé les évènements au cas ou).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    window.addEvent('domready', function() {
    var myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
    opacity: true,show:0,
    onActive: function(toggler, element){
     
    },
    onBackground: function(toggler, element){
     
    },
    onComplete: function(toggler, element){
     
    }
     
    });
    });
    Ce que je voulais faire c'est que le menu "s'accordéonne" tout seul.
    J'ai donc trouvé ce bout de code qui je rajoute dans onActive

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var myTimer = this.display.delay(10000, this, (this.previous + 1) % this.togglers.length);
    Tout ce passe à merveille le menu s'active tout seul.

    La ou réside le problème est que je voudrais que myTimer s'arrête de fonctionner si on clique sur un toggler parce qu'actuellement si on clique sur un toggler le timer ne s'arrête pas et très rapidement le menu s'emballe dans tous les sens.

    Je me doute que si je laisse myTimer dans onActive j'y arriverai pas ?
    Aussi j'ai tenté des dizaines de solutions mais rien ne fonctionne

    J'arrive à lancer un évènement lors du clic (genre un alert() :p) mais je n'arrive pas du tout à stopper display.delay.

    J'espère avoir été clair
    J'ai la tête qui éclate du coup.

    Merci à tous.

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    En mettant myTimer comme variable globale, avez-vous essayé de faire ceci ?


  3. #3
    Membre confirmé Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Par défaut
    Bonjour Vermine (lol)

    Oui tout à fait j'ai testé et en le mettant par exemple dans onComplete.
    Mais cela ne fonctionne pas.

    L'idéal serai de lancer le delay hors évènement onActive etc.
    Cela pourrais surement fonctionner ensuite avec $clear(myTimer).

    Comment puis-je réussir à mettre myTimer en dehors des évenements onActive, onComplete et onBackground. J'ai tenté de remplacer le "this" mais je ne trouve pas la syntaxe correct apparemment

    Merci par avance

    EDIT: Comment procéder pour mettre ma variable en global s'il vous plait ?
    Actuellement elle figure dans onActive.

    EDIT 2:

    Bon je peux te dire que le $clear fonctionne car j'ai mis ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    window.addEvent('domready', function() {
    var myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
    opacity: true,show:0,
    onActive: function(toggler, element){
    var myTimer = this.display.delay(3000, this, (this.previous + 1) % this.togglers.length);
    var myTimer = $clear(myTimer);
    }
    });
    });
    Et le défilement ne se produit plus, normal puisque que le clear s'execute après le lancement du delay. Si j'inverse les deux le défilement fonctionne, cependant toujours le même problème lorsque je clique il lance plusieurs instances le menu deviens fou très rapidement

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Essayez toujours de déclarer le timer en dehors de l'accordéon, sinon en dehors du domready.
    Puis vous faites le clear dans le onComplete. Mais il faut tester tout ça car je fais des suppositions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    window.addEvent('domready', function() {
     
       var myTimer;
     
       var myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
          opacity: true,show:0,
          onActive: function(toggler, element){
             myTimer = this.display.delay(3000, this, (this.previous + 1) % this.togglers.length);
          },
          onComplete: function(toggler, element){
    	 var myTimer = $clear(myTimer);	
          }
       });
    });

  5. #5
    Membre confirmé Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Par défaut
    bon ça avance :

    J'arrive à arrêter le défilement avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    window.addEvent('domready', function() {
    var test = 1;
     
    $('accordion').addEvent('click', function() { test = 2;  });
     
    var myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
    opacity: true,show:0,
    onActive: function(toggler, element){
    if(test==2) { myTimer = $clear(myTimer);}else{ myTimer = this.display.delay(3000, this, (this.previous + 1) % this.togglers.length);}
    }
    });
    });
    Le problème qui réside maintenant est lors du clic cela arrête le défilement mais pas le delay précédemment déclaré. De ce fait le slider s'arrete mais une instance plus tard.

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Excusez-moi, vous pourriez me mettre un peu plus de code pour que je puisse tester chez moi ?

  7. #7
    Membre confirmé Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Par défaut
    Pas de problème,
    je vais même te mettre un rar à disposition avec tous les éléments.

    Je prépare ça de suite et je reviens.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Stopper le scroll sur une ancre avec javascript
    Par rocketter dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 07/05/2014, 16h10
  2. [MooTools] Lien sur imagemenu mootools
    Par idamarco dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 24/12/2008, 03h08
  3. Démarrer / Stopper des services sur un PC distant
    Par El-Diablo- dans le forum C++Builder
    Réponses: 1
    Dernier message: 30/05/2008, 21h42
  4. [MooTools] [DOM] Question sur toolkit Mootools
    Par Ylias dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 16/10/2007, 00h09
  5. Stopper une impression sur Windows NT Pro ?
    Par coralie26 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 29/09/2007, 18h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo