jQuery obtenir tous les divs qui n’ont pas d’atsortingbut de classe

obtenir tous les divs qui ont un atsortingbut de classe

$('div[class]') 

obtenir tous les divs qui n’ont pas d’atsortingbut de classe

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

Ce code fonctionne mais je ne comprends pas pourquoi cela fonctionne. Si le code ci-dessus fonctionne, le code de tous les divs avec l’atsortingbut class doit être

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

qui ne donne aucun résultat.

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

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

modifier

La description des sélecteurs jQuery indique:

  • [atsortingbute]
    Correspond aux éléments qui ont l’atsortingbut spécifié.
  • [atsortingbute=value]
    Correspond aux éléments qui ont l’atsortingbut spécifié avec une certaine valeur.
  • [atsortingbute!=value]
    Correspond aux éléments qui n’ont pas l’atsortingbut spécifié ou qui ont l’atsortingbut spécifié, mais pas avec une certaine valeur.

Cela signifie que div[class=""] sélectionnerait tous les éléments DIV qui ont un atsortingbut de 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 sans classe:

 div:not([class]) 

Ce qui est important à comprendre, c’est qu’il existe des atsortingbuts de classe vides ainsi que des éléments sans atsortingbut de classe, mais qu’ils nécessitent des tests différents pour être sélectionnés.

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

 
Empty Class Atsortingbute
Full Class Atsortingbute
No Class Atsortingbute

Maintenant, passons 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 cela n’a pas de sens) :

 $(document).ready(function(e){ // Outputs "Empty Class Atsortingbute Full Class Atsortingbute" alert( "div[class] : " + $('div[class]').text() ); // Outputs "Full Class Atsortingbute" alert( "div[class!=''] : " + $('div[class!=""]').text() ); // Outputs "Empty Class Atsortingbute" alert( "div[class=''] : " + $('div[class=""]').text() ); // Outputs "No class Atsortingbute" alert( "div:not([class]) : " + $('div:not([class])').text() ); }); 

Vous pouvez voir ce code dans votre navigateur en visitant le site suivant: http://jsbin.com/ijupu

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

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

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

essayer

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

ou

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

cela signifie obtenir tout le div qui a la classe avec des noms quelconques