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 :

Sélectionner les DIV A qui ne sont pas imbriqués dans une DIV B


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut Sélectionner les DIV A qui ne sont pas imbriqués dans une DIV B
    bonjour,

    j'arrive pas à sélectionner que les élements qui ne sont pas imbriqués dans un élement déterminé.
    Dans ma tête, je me dis "sélectionner que les DIV de "qui n'ont pas le div de "groupement" comme parent"

    exemple de code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <td>
    <div class="groupement">
     <div class="solo"> a </div>
     <div class="solo"> b </div>
    </div>
    <div class="solo"> c </div>
    <div class="groupement">
     <div class="solo"> d </div>
     <div class="solo"> e </div>
    </div>
    <div class="solo"> f </div>
    </td>

    si je fais $(".solo") ça me sort "a b c d e f" alors que je ne veux que "c f" car ils ne sont pas encapsulés dans une div classée "groupement"


    j'ai aussi tenté par désespoir cela :
    Code jquery : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".solo").not(".groupement")
    mais ça ne marche pas hélas....

    comment faire ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    Citation Envoyé par clavier12AZQSWX
    j'ai aussi tenté par désespoir cela :
    ...
    mais ça ne marche pas hélas....
    il n'y a pas de place au hasard !

    A supposer que tous les éléments cités soient contenus dans une <td> tu n'auras que la possibilité d'accéder aux éléments de premier niveau, enfants directs donc, de la façon suivante :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    td > .solo {
      color: #FF0;
    }
    à toi de transformer cela en sélecteur jQuery

  3. #3
    Membre expérimenté
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 146
    Par défaut
    \ô/
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="groupement">
        <div class="solo"> a </div>
        <div class="solo"> b </div>
    </div>
    <div class="solo"> c </div>
    d'un autre côté avoir un élément enfant solo d'un élément parent groupement n'aide pas forcément le ciblage et l'éventuelle sémantique via les classes.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="groupement">
        <div> a </div>
        <div> b </div>
    </div>
    <div class="solo"> c </div>
    serait plus opportun.

  4. #4
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 464
    Par défaut
    bonsoir,

    je ne suis plus au taf, mais je pense que je vais donc essayer $(".groupement> .solo")

    et en attendant, j'avais trouvé une rustine dans ma boucle des $(".solo") :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    classe_du_parent=$(this).parent().prop('className');
    if (classe_du_parent!="groupement")
    {
    //faisons nos trucs
    }
    else
    {
    //on fait rien car l'élement est dans une div groupement
    }

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Citation Envoyé par clavier12AZQSWX
    et en attendant, j'avais trouvé une rustine dans ma boucle des $(".solo") :
    mais pourquoi prends tu le problème à l'envers ?

    Outre le sélecteur que je t'ai proposé, qui me semble être le plus simple, tu peux également utiliser :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    td > .solo {
      color: #F00;
    }
    :not([class="groupement"]) > .solo {
      font-weight: 700;
    }
    :not(.groupement) > .solo {
      font-size: 2em;
    }
    ce qui se traduit en jQuery par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const elements = $("td > .solo");
    // ou
    const elements = $(":not([class='groupement']) > .solo");
    // ou autre écriture
    const elements = $(":not(.groupement) > .solo");
    Les sélecteurs se lisent de la droite vers la gauche.

    Il te faut revenir aux fondamentaux :


    Citation Envoyé par Dave Hiock
    d'un autre côté avoir un élément enfant solo d'un élément parent groupement n'aide pas forcément le ciblage et l'éventuelle sémantique via les classes.
    Tout à fait mais il me semble avoir lu qu'il n'avait pas la main sur le HTML.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2020, 16h31
  2. Réponses: 2
    Dernier message: 09/09/2014, 14h01
  3. Réponses: 6
    Dernier message: 11/11/2010, 23h58
  4. Réponses: 2
    Dernier message: 07/12/2007, 15h20
  5. Réponses: 4
    Dernier message: 11/07/2006, 21h43

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