Comment puis-je obtenir les éléments sans atsortingbut particulier par jQuery

Je sais comment obtenir des éléments avec un atsortingbut particulier:

$("#para [attr_all]") 

Mais comment puis-je obtenir les éléments SANS atsortingbut particulier? J’essaie

  $("#para :not([attr_all])") 

Mais ça ne marche pas. Quelle est la bonne façon de faire cela?

Laissez-moi vous donner un exemple:

 

jQuery:

 $("#para [optional]") // give me the fname element $("#para :not([optional])") //give me the fname, lname, email (fname should not appear here) 

La première chose qui me vient à l’esprit (peut-être sous optimale):

 $('p').filter(function(){ return !$(this).attr('attr_all'); }); 

Cependant, p:not([attr_all]) devrait fonctionner, donc je pense que quelque chose d’autre se passe dans votre code.

Si votre exemple de code est le code exact que vous utilisez, je pense que le problème est un espace errant.

 $("#para :not([attr_all])") 

devrait être

 $("#para:not([attr_all])") 

Si vous laissez un espace là-dedans, il sélectionne les descendants de #para .

Un moyen plus rapide de le faire consiste à récupérer tous les éléments avec l’ID para (qui est un code HTML non valide s’il y en a plusieurs) et à utiliser le filtre (ou à trouver en fonction de la manière dont le HTML est construit) méthode pour obtenir uniquement les éléments sans l’atsortingbut comme suit:

 $('#para').filter(':not([attr_all])'); 

Si vous faites cela, jQuery fait beaucoup moins de travail car vous ne faites que parcourir un sous-ensemble d’éléments plus petit pour obtenir ceux qui ne possèdent pas l’atsortingbut. Le faire avec une seule instruction de sélecteur, par exemple $("#para :not([attr_all])") , fera en sorte que jQuery obtienne tous les éléments sans l’atsortingbut, puis les filtre pour ceux avec l’ID de para.

Essayez $("#para [attr!=val]") .

Votre :not vraiment devrait fonctionner, cependant, ce qui me fait penser que quelque chose d’autre se passe.

Pour obtenir la liste complète des sélecteurs d’atsortingbuts, consultez la documentation de jQuery Selectors .

La réponse de Frank DeRosa est à peu près correcte, mais comme le PO veut trouver les descendants, c’est un peu loin. Essayer moi-même, il semble que cela devrait fonctionner comme il est, mais il est possible que tout ce que vous exécutez n’aime pas l’opérateur “:” utilisé directement comme un descendant. Essayez d’utiliser

 $("#para input:not([optional])") 

Aurait laissé un commentaire mais ne peut pas encore.