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 :

Afficher/masquer une div au survol


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut Afficher/masquer une div au survol
    Bonjour,

    J'ai deux div l'une à la suite de l'autre que j'aimerais afficher au survol de la souris.
    Au départ, l'une est affiché, l'autre masqué.
    Si la souris passe sur celle qui est affichée, elle se masque et l'autre apparait.
    Quand la souris quitte la seconde, la première réapparait.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="element element_affiche" id="element_xxx">
    	blabla
    </div>
    <div class="element" id="element_xxx_second">
    	blablabla
    <div>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $(document).on('mouseover', '.element', function(e){
    	$(this).toggle(0);
    	$(this).children().toggle(0);
    });
    J'ai essayé pas mal de solution, mais rien n'y fait.
    Il est peut être possible d'afficher l'enfant de la div survolé, masquer la parent, puis l'inverse une fois quitté ?

  2. #2
    Membre chevronné
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Par défaut Réponse
    Bonjour TheoFoug,

    Est-ce que cet exemple de code correspond à ce que vous recherchez ?

    L'idée est d'englober vos deux éléments dans une div globale afin d'éviter les conflits d'événements JQuery entre mouseover et mouseleave.

    Cordialement,

    Simon de AwesomeAngular.

  3. #3
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Pas vraiment.

    Le nombre de couple de div va être conséquent, d'ou la récupération de l'Id au survol.
    Je ne peux pas utiliser d'autre framework, uniquement jquery.

  4. #4
    Membre chevronné
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Par défaut
    Bonjour,

    Pourquoi souhaitez-vous récupérer l'ID au survol de l'élément ?

    Je pense que ce serait plus simple de sélectionner d'abord tous les éléments, et de les traiter ensuite un par un avec la fonction each de jQuery.

  5. #5
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Ca me semble plus rapide en temps d'exécution.

  6. #6
    Membre chevronné
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Par défaut
    Pour reprendre la question initiale : "Il est peut être possible d'afficher l'enfant de la div survolé, masquer la parent, puis l'inverse une fois quitté ?".

    Oui c'est tout à fait possible :
    - Sélection d'un élément fils : .children();
    - Séléction d'un élément parent : parent();
    - Afficher/Masquer/Inverser : show, hide & toggle();

    Où en êtes-vous par rapport à votre problème initial ?

    Bien cordialement,

    Simon.

  7. #7
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    J'ai laissé tombé les child et les parents, trop compliqué pour moi.
    Puis j'ai essayé de faire des sélecteurs dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        // Récupération de l'ID (divA_65654)
        //let cssId = $(this).attr("id");
     
        // Extraction (65654)
        //cssId = cssId.substring(5, 10);
     
        // Masque divA_65654
        //$("divA_65654").css("display", "none");
    Mais apparament on ne peut pas ... donc j'ai fini par faire avec prev() et next().

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="wrapper">
        <div class="divA">I'm divA</div>
        <div class="divB">I'm divB</div>
    </div>
     
    <div class="wrapper">
        <div class="divA" id="divA_1478">I'm divA</div>
        <div class="divB" id="divB_1478">I'm divB</div>
    </div>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $("div.divA").mouseover(function() {
        $(this).next().css("display", "block")
        $(this).css("display", "none");
    });
     
    $("div.divB").mouseout(function() {
        $(this).previous().css("display", "block")
        $(this).css("display", "none");
    });
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    div {
        width: 200px;
        height: 50px;
    }
     
    .divA {
        background-color: blue;
    }
     
    .divB {
        display: none;
        background-color: red;
    }

    Fonctionne !

  8. #8
    Membre chevronné
    Avatar de LearningBoy
    Homme Profil pro
    Ingénieur Logiciel - Fullstack JavaScript
    Inscrit en
    Août 2017
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Logiciel - Fullstack JavaScript
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 73
    Par défaut
    Félicitations !

  9. #9
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Ca n'est pas parfait a cause, apparament, d'un "bug" dans javascript. Js (mouseout) ne détecte pas forcement que le curseur sort si ca va trop vite.
    De ce que j'ai pu lire, a cause du fait qu'il soit en événementiel.

    Donc parfois, c'est la deuxieme div qui reste affiché.

  10. #10
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    ne déclenche pas une erreur dans la console?

  11. #11
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Non, pourquoi ?

  12. #12
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    j'ai testé ton code avec 3 versions de jQuery, et l'erreur dans la console persiste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VM111:63 Uncaught TypeError: $(...).previous is not a function
        at HTMLDivElement.<anonymous> (VM111:63)
        at HTMLDivElement.dispatch (jquery.js:5206)
        at HTMLDivElement.elemData.handle (jquery.js:5014)
    d'après ce que je sais moi, c'est .prev() au lieu de .previous().

  13. #13
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Bah pourtant ...
    http://api.jquery.com/prev/

    previous() ne fonctionne pas.

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

Discussions similaires

  1. Afficher/masquer une div
    Par elect31 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/02/2017, 13h00
  2. Afficher/Masquer une div
    Par Evelyne31 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 07/11/2012, 14h45
  3. Afficher / masquer une div
    Par laurent94 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2011, 15h47
  4. Afficher/masquer une div sur une autre frame
    Par jerome69003 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/11/2009, 18h32
  5. Afficher/Masquer une div
    Par philbona dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 08/02/2007, 23h09

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