jQuery obtenir tous les divs qui n'ont pas d'attribut de classe

prendre toutes les divs qui a un attribut de classe

$('div[class]')

prendre toutes les divs qui n'ont pas d'attribut de classe

$('div[class!=""]')

ce code fonctionne mais je ne comprends pas pourquoi il fonctionne. Si le code ci-dessus fonctionne alors le code pour toutes les divs avec l'attribut de classe devrait être

$('div[class=""]') 

qui ne donne aucun résultat.

68
demandé sur BoltClock 2009-12-26 02:40:17

4 réponses

l'Essayer avec le :not() pseudo-sélecteur de classe :

$('div:not([class])')

modifier

la description de La sélecteurs jQuery dis:

  • [attribute]

    Correspond aux éléments qui ont l'attribut spécifié.
  • [attribute=value]

    Correspond les éléments qui ont l'attribut spécifié avec une certaine valeur.
  • [attribute!=value]

    Correspond à des éléments qui n'ont pas l'attribut spécifié ou n'ont l'attribut spécifié mais pas avec une certaine valeur.

Cela signifie div[class=""] sélectionnerait tous les éléments DIV qui ont un attribut class spécifié avec une valeur vide.

mais le dernier sélecteur est un sélecteur propriétaire de jQuery et non un sélecteur CSS . Vous devez utiliser :not() pour sélectionner tous les éléments DIV qui n'ont pas de classe:

div:not([class])
137
répondu Gumbo 2009-12-26 00:45:50

ce qui est important à réaliser est qu'il y a attributs de classe" vides ainsi que les éléments sans un attribut de classe, mais ils nécessitent des tests différents pour sélectionner.

il y a un certain nombre de tests qui font tous des choses différentes. Voici notre HTML pour nos tests:

<div class="">Empty Class Attribute </div>
<div class="column">Full Class Attribute </div>
<div>No Class Attribute </div>

maintenant, lançons nos tests (la première partie est simplement une chaîne qui nous aide à savoir ce qui vient d'être appelé dans l'alerte, sinon c'est vide de sens) :

$(document).ready(function(e){
  // Outputs "Empty Class Attribute Full Class Attribute"
  alert( "div[class] : "     + $('div[class]').text()     );

  // Outputs "Full Class Attribute"
  alert( "div[class!=''] : " + $('div[class!=""]').text() );

  // Outputs "Empty Class Attribute" 
  alert( "div[class=''] : "  + $('div[class=""]').text()  );

  // Outputs "No class Attribute"
  alert( "div:not([class]) : " + $('div:not([class])').text()     );
});

vous pouvez visualiser le code dans votre navigateur en visitant ici: http://jsbin.com/ijupu

maintenant, armé de cette connaissance, si vous vouliez sélectionner chaque élément div sur la page avec soit un attribut vide et aucun attribut, utiliser le sélecteur suivant:

$("div[class=''], div:not([class])");
21
répondu Doug Neiner 2015-01-15 16:47:10

Le $('div[class=""]') sélecteur essentiellement lit: "Obtenir tous les éléments div dont l'attribut de classe est une chaîne vide, comme sa valeur." - Qui exclut tous les éléments div qui ont une valeur dans l'attribut de classe, autre qu'une chaîne vide, et tous les éléments div qui n'ont pas l'attribut de classe définie.

4
répondu Atli 2013-04-26 22:11:35

essayer

jQuery('div[class^=""]')

ou

$('div[class^=""]')

cela signifie get all div qui a une classe avec des noms quelconques

-1
répondu shadrachJabonir 2013-06-04 10:04:16