var classes = $(this).attr('class').split(' '); // this gets the current element classes
var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.
Rodzicem w powyższej sytuacji jest ankor.
Gdybym chciał uzyskać DIV pierwszego rodzica $ (this), jak wyglądałby kod?
var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.
* Zasadniczo chcę uzyskać klasy pierwszego rodzica DIV $ (this).
dzięki
parents("div")
przechodzi i zwraca wszystkie nadrzędne elementy div, których należy użyć.eq(0)
po nim, aby upewnić się, że zwróci tylko ten, który chcesz.parents('div').eq(0)
- użycie tego selektora CSS torebki PODĄŻANE przez jQuery do filtrowania tylko do pierwszego elementu da niewielki wzrost wydajności - zobacz sekcję ``closest()
aby nie zwrócił wszystkich rodziców opróczdiv
rodzica.Użyj
.closest()
, która pobiera pierwszy element nadrzędny, który pasuje do podanego selektora'div'
:var classes = $(this).closest('div').attr('class').split(' ');
EDYTOWAĆ:
Jak zauważyła @Shef,
.closest()
zwróci bieżący element, jeśli okaże się, że jest to również DIV. Aby to wziąć pod uwagę, użyj.parent()
najpierw:var classes = $(this).parent().closest('div').attr('class').split(' ');
źródło
.closest()
dopasuje się, jeśli$(this)
jest elementem DIV..parents("div").eq(0)
To dostaje rodzic, jeśli jest to div. Wtedy zyskuje klasę.
var div = $(this).parent("div"); var _class = div.attr("class");
źródło
Nie komplikuj!
var classes = $(this).parent('div').attr('class');
źródło
dwie najlepsze opcje to
$(this).parent("div:first") $(this).parent().closest('div')
i oczywiście możesz znaleźć atrybut klasy przez
$(this).parent("div:first").attr("class") $(this).parent().closest('div').attr("class")
źródło