jQuery „Nie ma atrybutu” selektor?

142

Mogę znaleźć element div, który ma taki atrybut:

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

Ale jeśli spróbuję znaleźć element div, który nie ma tego atrybutu, pojawia się błąd - mój kod to:

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

Czy istnieje selektor „nie ma atrybutu” w jQuery?

Dla porównania, przypadek użycia jest taki, że dowolny element div, który nie ma atrybutu timestamp, nie został dodany dynamicznie, a zatem jest przydatny.

Dzięki!

HO
źródło

Odpowiedzi:

220

Użyj :not()selektora.

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

Nawiasem mówiąc, jest to prawidłowy selektor API selektorów, więc nie jest specyficzny dla jQuery. Będzie działać zi querySelectorAll()w Twoim CSS (pod warunkiem obsługi przeglądarki ) .

Nienawidzę lenistwa
źródło
12
Inny sposób zapisania tego `$ ('. Finance-plan-container').
Not
@epascarello: Bardzo prawdziwe.
I Hate Lazy
37

Możesz filtrować selektor używając .not () lub : not () selector.

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

LUB

$('.funding-plan-container').not('[data-timestamp]') 
Sushanth -
źródło