69 votes

jQuery obtient tous les divs qui n'ont pas d'attribut class

obtenir tous les divs qui ont un attribut de classe

 $('div[class]')
 

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

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

Ce code fonctionne mais je ne comprends pas pourquoi cela fonctionne. Si le code ci-dessus fonctionne, alors le code de tous les div avec attribut class devrait être

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

ce qui ne donne aucun résultat.

137voto

Gumbo Points 279147

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

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


Modifier

La description pour les sélecteurs jQuery dire:

  • [attribute]
    Correspond à des éléments qui ont l'attribut spécifié.
  • [attribute=value]
    Correspond à des é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électionnez tous les éléments DIV qui ont un class de l'attribut spécifié avec une valeur vide.

Mais le dernier sélecteur est propriétaire d'un sélecteur jQuery et pas 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])

21voto

Doug Neiner Points 34940

Ce qui est important à comprendre, c'est qu'il y a des vides attributs de classe ainsi que des éléments sans un attribut de classe, mais ils exigent différents tests pour sélectionner.

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

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

Maintenant, permet d'exécuter nos tests (La première partie est simplement une chaîne de caractères qui nous permet de savoir ce qui a été appelé lors de 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[class]').text()     );
});

Vous pouvez afficher ce code dans votre navigateur en vous rendant ici: http://jsbin.com/ijupu

Maintenant, armés de cette connaissance, si vous souhaitez sélectionner tous les div élément sur la page avec un attribut vide et aucun attribut, utilisez le sélecteur suivant:

$("div[class=''], div:not([class])");

4voto

Atli Points 4288

Le sélecteur $('div[class=""]') lit essentiellement: "Obtenez tous les éléments div dont l'attribut de classe a une chaîne vide comme valeur." - Cela exclut tous les éléments div qui ont n'importe quelle valeur dans l'attribut class, à l'exception d'une chaîne vide, et tous les éléments div qui n'ont pas d'attribut class défini.

-1voto

shadrachJabonir Points 56

essayer

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

ou

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

cela signifie obtenir tous les div qui a la classe avec des noms

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X