jQuery Sélecteur «N'a pas d'attribut»?

142

Je peux trouver un div qui a un attribut comme ceci:

$('.funding-plan-container[data-timestamp]')

Mais si j'essaie de trouver un div qui n'a pas cet attribut, j'obtiens une erreur - mon code est:

$('.funding-plan-container[!data-timestamp]')

Y a-t-il un sélecteur "n'a pas d'attribut" dans jQuery?

Pour référence, le cas d'utilisation ici est que tout div qui n'a pas d'attribut d'horodatage n'a pas été ajouté dynamiquement, et est donc utile.

Merci!

HO
la source

Réponses:

221

Utilisez le :not()sélecteur.

$('.funding-plan-container:not([data-timestamp])')

Ceci, en passant, est un sélecteur d'API Selectors valide , donc il n'est pas spécifique à jQuery. Cela fonctionnera avec querySelectorAll()et dans votre CSS (étant donné la prise en charge du navigateur ) .

Je déteste paresseux
la source
12
Autre façon de l'écrire `$ ('.funding-plan-container').
Not
@epascarello: Très vrai.
Je déteste paresseux
37

Vous pouvez filtrer le sélecteur à l'aide du sélecteur .not () ou : not () .

$('.funding-plan-container:not([data-timestamp])').

OU

$('.funding-plan-container').not('[data-timestamp]') 
Sushanth -
la source