Pracuję z jQuery i szukam sposobu, aby sprawdzić, czy element ma skojarzoną z nim określoną klasę CSS.
Mam identyfikator elementu i klasę CSS, której szukam. Muszę tylko być w stanie, w instrukcji if, dokonać porównania na podstawie istnienia tej klasy w elemencie.
javascript
jquery
css
Mitchel Sellers
źródło
źródło
Odpowiedzi:
Użyj
hasClass
metody:lub
Argument jest (oczywiście) łańcuchem reprezentującym klasę, którą sprawdzasz i zwraca wartość logiczną (więc nie obsługuje łączenia łańcuchowego, jak większość metod jQuery).
Uwaga: Jeśli przekażesz
className
argument zawierający spacje, zostanie on dopasowany dosłownie do ciągu elementów kolekcjiclassName
. Jeśli na przykład masz element,wtedy to zwróci
true
:a te zwrócą
false
:źródło
z FAQ
lub:
źródło
Jeśli chodzi o negację, jeśli chcesz wiedzieć, czy element nie ma klasy, możesz po prostu zrobić tak, jak powiedział Mark.
źródło
Bez jQuery:
Lub:
To DUŻO szybsze niż jQuery!
źródło
...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1)
, a nie tylko&&!(' '+e.classname+' ').indexOf(' '+c+' ')
?indexOf
zwraca-1
to klasa nie istnieje. Gdybym to zrobił!!-1
, byłbytrue
. Skoro to robię!!-1+1
, będzie to fałszywe. Byłby lepszy sposób...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')
, ale wtedy o tym nie pamiętałem....&&~(' '+e.className+' ').indexOf(' '+c+' ')
Aby pomóc każdemu, kto tu wyląduje, ale tak naprawdę szukał sposobu na zrobienie tego bez jQuery:
źródło
Sprawdź oficjalną stronę FAQ jQuery:
Jak sprawdzić, czy element ma klasę pertikularną, czy nie
źródło
źródło
W moim przypadku użyłem funkcji 'is' a jQuery, miałem element HTML z dodanymi różnymi klasami css, szukałem konkretnej klasy w środku tych, więc użyłem "jest" dobrą alternatywą do sprawdzenia klasa dynamicznie dodawana do elementu html, który ma już inne klasy css, jest to kolejna dobra alternatywa.
prosty przykład:
zaawansowany przykład:
źródło