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 par la négative un groupe d'éléments


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut Sélectionner par la négative un groupe d'éléments
    Bonjour

    Comment indiquer en jQUERY de mettre en rouge :

    TOUS les éléments de ma page ayant la classe .fa

    SAUF CEUX DONT

    les PARENTS ont la classe .btn-color

    j'ai entre autres tentatives essayé cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.fa').parent(':not(.btn-color)').css({'color':'red'});
    mais plouf .

    par exemple : tous mes boutons comme ceux ci-dessous ne doivent pas être affecté par la modification de couleur du <span>

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <button class="btn-color">
    <span class="fa fa-info fa-lg"></span> - Par nom
    </button>

    (vous aurez peut-être reconnu l'usage des font "awesome font" )

    merci

    une idée ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Quand j'essaie ton truc dans jsfiddle ça marche

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $('.fa').each( function(){
       if( !$(this).parent().hasClass('.btn-color') )
       {
          $(this).css({'color':'red'});
       }
    });

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut
    merci les collègues

    dans jsdiffle ca marche en effet ...pas dans ma page ...
    la proposition avec .each est aussi OK.

    sinon en Css PUR ... comment traduire ma demande ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .fa:not(button>span.fa)  {color:'red'}
    ca colle pas

  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
    Bonjour,
    on peut s'interroger sur l'utilité d'utiliser jQuery pour affecter un style à des éléments, sauf bien sûr si cela participe au « dynamisme » de la page, ce qui ne semble pas être le cas ici.
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    button:not(.btn-color) .fa{
        color: red;
    }
    ou en précisant enfant direct
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    :not(.btn-color) > .fa{
        color: red;
    }

    En reportant ces sélecteurs dans ton jQuery tu devrais obtenir le même résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $('button:not(.btn-color) .fa').css({
        'color': 'red'
    });
    // ou
    $(':not(.btn-color) > .fa').css({
        'color': 'red'
    });
    Ceci n'empêche que ton code ne fonctionne pas comme tu le souhaites car c'est aux parents que tu appliques le CSS et non aux éléments de classe="fa" !

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 098
    Par défaut
    Un petit mot à propos de la performance des sélecteurs.
    Le sélecteur :not() est équivalent à *:not(). Autrement dit, c’est un * implicite. Et * est un des sélecteurs les moins performants.
    Donc il vaut mieux toujours préciser button:not().
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut
    Bonjour à tous et merci pour votre aide. J’ai effectivement trouvé parmi vos propositions une solution qui fonctionne.
    Elle utilise le sélecteur :not même si elle serait gourmande.

    C’est donc celle-là qui marche.

    :not(.btn-color)> .fa{color:’red ´}

    alors une question

    cette proposition

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    button:not(.btn-color) .fa{
        color: red;
    }

    est-elle vraiment identique à celle ci

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    :not(.btn-color)> .fa{color:’red ´}

    car l'une donne satisfaction et l'autre non.

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

Discussions similaires

  1. Radio button une seule sélection par groupe
    Par dmoluc dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/05/2018, 11h43
  2. Editeur de texte qui fait la sélection par colonne
    Par wodel dans le forum Windows XP
    Réponses: 5
    Dernier message: 10/11/2010, 13h45
  3. Réponses: 3
    Dernier message: 31/08/2006, 00h38
  4. [CSS]Problème de centrage par marges négatives
    Par Oluha dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 08/08/2006, 15h01
  5. Couleur de sélection par défaut
    Par sicard_51 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/04/2003, 23h35

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