Chcę uzyskać nazwę klasy za pomocą jQuery
A jeśli ma identyfikator
<div class="myclass"></div>
javascript
jquery
X10nD
źródło
źródło
parents()
.this.className
działa bez jquery (powróciłby"myclass"
w powyższym przykładzie)Odpowiedzi:
Po uzyskaniu elementu jako obiektu jQuery za pomocą innych środków niż jego klasa
powinien załatwić sprawę. Do użycia identyfikatora
.attr('id')
.Jeśli znajdujesz się w module obsługi zdarzeń lub innej metodzie jQuery, w której elementem jest czysty węzeł DOM bez opakowania, możesz użyć:
Obie są standardowymi metodami DOM i są dobrze obsługiwane we wszystkich przeglądarkach.
źródło
if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
.attr('class')
i połączysz jąif(className.indexOf('Class_I_am_Looking_For') > = 0)
, możesz łatwo sprawdzić, czy istnieje konkretna klasa i nadal obsługiwać wiele klas.if(className.indexOf('Class_I_am_Looking_For') > = 0)
również będzie pasował"This_Is_Not_the_Class_I_am_Looking_For"
Lepiej jest użyć,
.hasClass()
jeśli chcesz sprawdzić, czy element ma konkretny elementclass
. Wynika to z faktu, że gdy element ma wieleclass
, sprawdzenie nie jest trywialne.Przykład:
Gdzie:
Dzięki
.hasClass()
możemy sprawdzić, czydiv
ma klasędivhover
.źródło
.is('.divhover')
Bądź ostrożny. Być może masz klasę i podklasę.
Jeśli skorzystasz z poprzednich rozwiązań, będziesz mieć:
Więc jeśli chcesz mieć selektor klasy , wykonaj następujące czynności:
i będziesz miał
Teraz, jeśli chcesz wybrać wszystkie elementy, które mają tę samą klasę, takie jak div powyżej:
to znaczy
Aktualizacja 2018
LUB można zaimplementować za pomocą waniliowego javascript w 2 wierszach:
źródło
'.'+$('#id').attr('class').split(/[ \n\r\t\f]+/).join('.')
, że spacja, Tab, LF, CR i FF mogą rozdzielać klasy. (.split()
akceptuje również RegExps.)'.'+$('#id').attr('class').split(/\s+/).join('.')
byłoby bardziej zwięzłe, prawda? A może pasowałoby to do czegoś, o czym nie myślę?.attr('class').trim().split(...)
Ma to na celu przekształcenie drugiej klasy w wiele klas za pomocą elementu
źródło
możesz po prostu użyć,
var className = $('#id').attr('class');
źródło
Jeśli urządzenie
<div>
posiadaid
:...możesz spróbować:
Jeśli masz
<div>
tylko jedenclass
, możesz spróbować:źródło
Jeśli zamierzasz użyć funkcji podziału do wyodrębnienia nazw klas, będziesz musiał zrekompensować potencjalne warianty formatowania, które mogą dać nieoczekiwane wyniki. Na przykład:
produkuje
Myślę, że lepiej jest użyć wyrażenia regularnego, aby dopasować zestaw dopuszczalnych znaków dla nazw klas. Na przykład:
produkuje
Wyrażenie regularne prawdopodobnie nie jest kompletne, ale mam nadzieję, że rozumiesz mój punkt widzenia. Takie podejście ogranicza możliwość złego formatowania.
źródło
Aby wypełnić odpowiedź Whitestock (która jest najlepsza, jaką znalazłem), zrobiłem:
Tak więc dla „myclass1 myclass2” wynikiem będzie „.myclass1 .myclass2”
źródło
Nazwę klasy można uzyskać na dwa sposoby:
LUB
źródło
Z Javascriptem
Z jQuery
LUB
źródło
Jeśli nie znasz nazwy klasy, ALE znasz identyfikator, możesz spróbować:
Następnie zadzwoń, używając:
źródło
Jeśli chcesz uzyskać klasy div, a następnie chcesz sprawdzić, czy istnieje jakaś klasa, skorzystaj z prostego użycia.
na przykład;
źródło
Spróbuj
HTML
jQuery
źródło
jeśli mamy pojedynczy lub chcemy pierwszego
div
elementu, którego możemy użyć$('div')[0].className
w przeciwnym razie potrzebujemy jednegoid
z tych elementówźródło
Jeśli mamy kod:
aby przyjąć nazwę klasy za pomocą jQuery, możemy zdefiniować i użyć prostej metody wtyczki:
lub
Zastosowanie metody będzie następujące:
Musimy zauważyć, że zwróci listę klas w przeciwieństwie do metody macierzystej element.className, która zwraca tylko pierwszą klasę dołączonych klas. Ponieważ często element ma więcej niż jedną klasę, zaleca się, aby nie używać tej metody natywnej, ale element.classlist lub metodę opisaną powyżej.
Pierwszy wariant zwróci listę klas jako tablicę, drugi jako ciąg - nazwy klas oddzielone spacjami:
Inną ważną uwagą jest to, że zarówno metody, jak i metoda jQuery
zwraca tylko listę klas pierwszego elementu przechwyconego przez obiekt jQuery, jeśli użyjemy bardziej powszechnego selektora, który wskazuje wiele innych elementów. W takim przypadku musimy zaznaczyć element, chcemy uzyskać jego klasy, używając jakiegoś indeksu, np
To zależy również od tego, co musisz zrobić z tymi klasami. Jeśli chcesz po prostu sprawdzić klasę na liście klas elementu o tym identyfikatorze, powinieneś po prostu użyć metody „hasClass”:
jak wspomniano w komentarzach powyżej. Ale jeśli będziesz musiał wziąć wszystkie klasy jako selektor, użyj tego kodu:
Wynik będzie:
i możesz to zrobić, aby dynamicznie utworzyć na przykład konkretną regułę przepisywania css.
pozdrowienia
źródło
To też działa.
źródło
Najlepszy sposób na uzyskanie nazwy klasy w javascript lub jquery
attr()
funkcja atrybutu służy do pobierania i ustawiania atrybutu.źródło
użyj w ten sposób:
jeśli używałeś tej klasy więcej niż jeden raz, użyj każdego operatora
źródło