Nie mogę wymyślić, jak uzyskać class
wartość klikniętego elementu.
Kiedy używam kodu poniżej, za każdym razem dostaję „node-205” .
jQuery:
.find('> ul')
.tabs(
{
selectedClass: 'active',
select: function (event, ui) {
//shows only the first element of list
$(this).children('li').attr('class');
},
cookie: { expires: 0 },
fx: fx
})
HTML:
<ul class="tabs">
<li class="node-205"></li>
<li class="node-150"></li>
<li class="node-160"></li>
</ul>
Odpowiedzi:
Oto szybki przykład jQuery, który dodaje zdarzenie click do każdego znacznika „li”, a następnie pobiera atrybut klasy dla klikniętego elementu. Mam nadzieję, że to pomoże.
Podobnie nie musisz zawijać obiektu w jQuery:
W nowszych przeglądarkach możesz uzyskać pełną listę nazw klas :
Możesz emulować
classList
w starszych przeglądarkach, używającmyClass.split(/\s+/);
źródło
źródło
Widziałem to pytanie, więc pomyślałem, że mogę go nieco rozwinąć. Jest to rozwinięcie idei, którą miał @SteveFenton. Zamiast przypisywać
click
zdarzenia do każdegoli
elementu, bardziej efektywne byłoby delegowanie zdarzeń zul
dołu.Dla jQuery 1.7 i nowszych
Dokumentacja:
.on()
Dla jQuery 1.4.2 - 1.7
Dokumentacja:
.delegate()
W ostateczności dla jQuery 1.3 - 1.4
lub
Dokumentacja:
.live()
źródło
To powinno załatwić sprawę:
Więcej informacji na temat interfejsu użytkownika znajduje się na stronie http://jqueryui.com/demos/tabs/#Events
źródło
Wszystkie dostarczone rozwiązania zmuszają Cię do znajomości elementu, który wcześniej klikniesz . Jeśli chcesz uzyskać klasę z dowolnego klikniętego elementu , możesz użyć:
źródło
$(e.target)
zamiast,$('#' + e.target.id)
a jQuery nadal będzie obsługiwać tę sprawę w rozsądny sposób.źródło