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.
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])
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])");
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.
essayer
jQuery('div[class^=""]')
ou
$('div[class^=""]')
cela signifie get all div qui a une classe avec des noms quelconques