2009-12-25 4 views
68

obtenir tous les divs qui a attribut classjQuery obtenir tous les divs qui n'ont pas attribut class

$('div[class]') 

obtenir tous les divs qui n'ont pas attribut class

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

Ce code fonctionne, mais je n » Je ne comprends pas pourquoi cela fonctionne. Si le code ci-dessus fonctionne alors le code pour tous les divs avec attribut de classe doit être

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

qui ne donne aucun résultat.

Répondre

136

Essayez avec le :not() pseudo-class selector:

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

Modifier

La description du jQuery selectors dire:

  • [attribute]
    Correspond aux é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]
    éléments correspondances qui soit ne pas l'attribut spécifié ou n'ont l'attribut spécifié, mais pas avec une certaine valeur.

Cela signifie que div[class=""] sélectionnera tous les éléments DIV ayant 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 CSS selector. Vous devez utiliser :not() pour sélectionner tous les éléments DIV qui ne sont pas une classe:

div:not([class]) 
+0

hmm. Cela ne répond pas à la question posée. –

+14

@Scott Evernden: Eh bien, en fait, je ne vois pas de question. ;) – Gumbo

+0

Pour plusieurs cas de 'non', vous pouvez faire quelque chose comme' div: not ([class], [style]) ' – jocull

4

Le sélecteur $('div[class=""]') lit essentiellement: « Désigne tous les éléments div dont l'attribut class a une chaîne vide comme valeur. » - Cela exclut tous les éléments div ayant une valeur quelconque dans l'attribut de classe, autre qu'une chaîne vide, et tous les éléments div dont l'attribut de classe n'est pas défini.

21

Ce qui est important de réaliser est qu'il ya vide attributs de classe ainsi que des éléments sans un attribut de classe, mais ils ont besoin de tests différents pour sélectionner.

Il existe 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, permet d'exécuter nos tests (La première partie est simplement une chaîne qui nous permet de savoir ce qui vient d'être appelé dans l'alerte, sinon il n'a pas 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 voir ce code dans votre navigateur en vous rendant ici: http://jsbin.com/ijupu

maintenant, armé de ce savoir, si vous voulez sélectionner tous les éléments div sur la page avec soit un attribut vide et aucun attribut, utilisez le sélecteur suivant:

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

essayer

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

ou

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

cela signifie obtenir toutes les div qui a de la classe avec les noms

Questions connexes