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 :

Quel sélecteur utiliser ?


Sujet :

jQuery

  1. #1
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut Quel sélecteur utiliser ?
    Bonjour, je vous propose ici un petit JSFiddle concernant une problématique que je n'arrive pas à résoudre.

    Le but ici est de créer un mode de compatibilité pour IE9 afin de gérer mes menu déroulants, ici je voudrai gérer sa au clic.

    Je dispose de menu composés d'items et de sous-menus, je voudrai qu'au clic sur le <li> parent, cela display le <ul> enfant. Jusqu'ici sa fonctionne sauf lorsque la structure est la suivante :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ul class="nav">
    	<li><a>item1</a>
    		<ul class="sous-nav-1">
    			<li><a>sous-item1</a><
    				<ul class="sous-nav-2">
    					<li><a>sous-sous-item1</a></li>
    				</ul>
    			<li>
    		</ul>
    	</li>
    </ul>
    Essayer de cliquer sur "Historique et bases de données", cela va display le sous-menu, logique. Maintenant essayé de dérouler le menu sous "Reunion expe"...
    Problématique: A partir d'un point du DOM, identifier sur quel <li> je clic et sélectionner uniquement l'<ul> enfant. Il faut que le tout fonctionne peut importe le nombre de sous-menu imbriqués.

    How to do ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    salut,

    en fait le problème est que quand tu clic sur ton deuxième "dropdown-submenu" tu émet aussi un event clic sur le "dropdown-submenu" qui le contient...

    avec ça, ça devrait marcher (en rouge):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $('.dropdown-submenu').on('click', function(e){
        //alert('clicked');
        $(this).find(".dropdown-menu:first").toggle();
        e.stopPropagation();
    });

  3. #3
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    C'est magnifique, exactement ce que je veux

    J'avais bien identifié le problème mais n'avais aucune idée de comment y remédier, je connaissais pas le principe de propagation.

    Merci beaucoup, sujet résolu !

  4. #4
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J'ai de nouveau un problème similaire, je m'explique.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <li class="dropdown-submenu"><a unselectable="on" href="#">
    	Solanacées Cucurbitacés<span class="caret"></span></a><span class="caret-ie"></span>
    	<ul class="dropdown-menu">	
    		<li><a href="#">Annexe DV1</a></li>
    		<li><a href="#">Variétés</a></li>
    		<li class="dropdown-submenu"><a href="#">Programme d'appro<span class="caret"></span></a><span class="caret-ie"></span>
    			<ul class="dropdown-menu">
    ...etc

    J'ai deux éléments <span> placés sur mes li, l'un dans le <a>, l'autre à l'exterieur. En mode clic to display je veux que le sous menu soit display sur le clic du <li>, dans ce cas le 'caret' est rendu invisible et 'caret-ie' visible (en gros je veux que l'user sache ou cliquer grace à ce caret-ie, donc je le sors du <a>), néamoins je n'arrive pas à créer le sélecteur jQuery qui au survor du <li> changera la couleur de ce 'span-ie'.


    Voici ce que j'ai
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('.dropdown-submenu li').on('hover', function(e){
    	$(this).find(".caret-ie").css("color", "blue");
    	e.stopPropagation();
    });

    La encore je ne veux qu'un seul 'caret-ie' change de couleur.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    ...j'ai rien compris...

    et j'ai pas trouvé dans le fiddle...

  6. #6
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Quand on dit que le plus dur est de se faire comprendre

    Tiens, j'ai update le fiddle

    http://jsfiddle.net/r37jtwec/13/

    Ce que je veux, c'est qu'au survol d'un <li> (possedant un sous-item <ul>), le <span class="caret-ie"> change de couleur. Une solution en JS ou CSS me convient, le but est juste d'indiquer à l'utilisateur que s'il survol ce <li>, il peut dérouler un sous-menu.

  7. #7
    Membre régulier Avatar de StripMat
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    J'ai trouvé une solution, c'est pas exactement ce que je voulais mais sa le fait :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .dropdown-submenu:hover > .caret-ie{
        color:green;
    }

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    ok, sinon un truc dans le genre ça peut peut-etre le faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $('.dropdown-menu li').hover( function(e) {
        e.stopPropagation();
        $(".caret-ie").removeClass("colorBlue");
        $(this).find(".caret-ie:first").addClass("colorBlue");
    }, function() {
        $(".caret-ie").removeClass("colorBlue");
    } )

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

Discussions similaires

  1. [JEditorPane] Quel listener utiliser?
    Par Pill_S dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 27/07/2004, 13h32
  2. [Parser HTML] quel parser utiliser pour du HTML 4.0 ?
    Par Cyber@l dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 19/07/2004, 19h32
  3. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44
  4. Réponses: 3
    Dernier message: 27/08/2003, 21h14
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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