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

jQuery Discussion :

Passer du mouseover au clic


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut Passer du mouseover au clic
    Bonjour à tous,

    Je reviens à la charge avec mon menu déroulant en javascript (et un peu de jQuery). Pour rappel, j'ai en haut des onglets qui font apparaître une div en dessous du menu. Grâce à jQuery, ces div se remplacent les unes les autres en glissant de façon fluide. Cf. capture ci-jointe pour plus de clarté.

    Tout fonctionne comme je le souhaitais initialement, c'est-à-dire que les div se succèdent en se basant sur le passage de la souris. Mais le résultat est un peu trop "speed" et sera sans doute déroutant pour les internautes. Je souhaite donc conserver le même principe de fonctionnement, mais en utilisant le clic.

    Un clic ouvrirait chaque div. Un nouveau clic (s'il a lieu) fermerait cette même div. Mais si la première div n'est pas refermée par un clic (ce qui devrait arriver le plus souvent), je voudrais obtenir la même animation qu'avec le mouseover actuel : que la nouvelle div remplace la précédente en "glissant dessus".

    J'ai donc tenté d'adapter mon code javascript en remplaçant mouseover par click, en faisant appel à des tests (if…else), mais rien à faire ça ne tourne pas. Le meilleur résultat auquel je suis arrivé est que les div apparaissent les unes au-dessous des autres, sans refermer la précédente.

    Mes notions de JS sont encore trop sommaires je le crains...
    Une bonne âme pour me mettre sur la piste ?…

    Mon code actuel (qui fonctionne en mouseover/mouseout) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $(document).ready(function() {						
    	$('.tabMenu > li:not(.blind, .lastblind)').mouseover(function(){
    		$(this).removeClass('close');  
    		$(this).addClass('open');
    		$('.boxBody div:eq(' + $('.tabMenu > li').index(this) + ')').stop(true,true).slideDown({duration:900, easing:'easeOutQuad'});
    });
     
    	$('.tabMenu > li:not(.blind, .lastblind)').mouseout(function() {
    		$(this).removeClass('open');  
        	$(this).addClass('close');
        	$('.boxBody div').stop(true,true).slideUp({duration:500, easing:'easeOutQuad'});
    });
    });
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu peux utiliser .toggle() par exemple pour gérer deux fonctions de rappels pour un même événement.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Merci Bovino.

    Voici la façon dont j'ai modifié mon code.
    Mais le résultat est le même que ce que j'avais avant : lorsque l'une des divs est ouverte, le clic sur un autre onglet ajoute la div correspondante en dessous de celle qui est ouverte, au lieu de la "remplacer" en glissant.

    Une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $(document).ready(function() {		   
     
    $('.tabMenu > li:not(.blind, .lastblind)').toggle(function(){
     
    	$('.boxBody div:eq(' + $('.tabMenu > li').index(this) + ')').stop(true,true).slideDown({duration:900, easing:'easeOutQuad'});
     },function(){
     
       $('.boxBody div').stop(true,true).slideUp({duration:500, easing:'easeOutQuad'});
     });
     
    });

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Erratum :
    Pour être plus juste, voici le code que j'utilise (j'avais oublié une partie) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $(document).ready(function() {		   
     
    $('.tabMenu > li:not(.blind, .lastblind)').toggle(function(){
    	$(this).removeClass('close');
    	$(this).addClass('open');
    	$('.boxBody div:eq(' + $('.tabMenu > li').index(this) + ')').stop(true,true).slideDown({duration:900, easing:'easeOutQuad'});
     },function(){
       $(this).removeClass('open');
       $(this).addClass('close');
       $('.boxBody div').stop(true,true).slideUp({duration:500, easing:'easeOutQuad'});
     });
     
    });

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    En fait, en utilisant le code ci-dessous, j'obtiens l'effet désiré, mais seulement une fois. C'est à dire que si je clique sur l'onglet 1, la div 1 s'ouvre. Si je clique sur l'onglet 2, la div 2 la remplace. C'est parfait.
    Mais si je clique de nouveau sur l'onglet 1, il referme la div.
    D'après ce que je comprends, c'est "normal", car l'onglet 1 répond à son second clic, c'est à dire la fonction 2 de son toggle.




    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
     
    $(document).ready(function(){
     
    $('.tabMenu > li:not(.blind, .lastblind)').toggle(function(){
    	$(this).removeClass('close');
    	$(this).addClass('open');
    	$('.boxBody div').stop(true,true).slideUp({duration:500, easing:'easeOutQuad'});
    	$('.boxBody div:eq(' + $('.tabMenu > li').index(this) + ')').stop(true,true).slideDown({duration:900, easing:'easeOutQuad'});
    },function(){
    	$(this).removeClass('open');
    	$(this).addClass('close');
    	$('.boxBody div').stop(true,true).slideUp({duration:500, easing:'easeOutQuad'});
     });
     
    });

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    peut être n'as tu pas regardé
    Mise en place d'une navigation par onglets avec jQuery

Discussions similaires

  1. attendre clic bouton pour passer à l'action suivante
    Par gerard1638 dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2014, 10h41
  2. Comment se passer du clic dans une zone de liste
    Par fremarnat dans le forum IHM
    Réponses: 3
    Dernier message: 30/10/2013, 08h14
  3. KML, onSelect : le beurre (mouseover) et l'argent du beurre (clic)
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 21/04/2013, 07h29
  4. Passer du Pascal à Delphi
    Par poppels dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2002, 21h07
  5. Passer en mode 800*600
    Par flavien tetart dans le forum Assembleur
    Réponses: 8
    Dernier message: 30/05/2002, 23h05

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