Jak wybrać pierwszego rodzica DIV za pomocą jQuery?


96
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

Odpowiedzi:


161

Służy .closest()do przechodzenia w górę drzewa DOM do określonego selektora.

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
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
meo

3
Pamiętaj, że lepiej jest używać wydajności .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ę ``
Noah Whitmore

@NoahWhitmore Naprawiono to. Używany, closest()aby nie zwrócił wszystkich rodziców oprócz divrodzica.
Shef

41

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(' ');

5
.closest()dopasuje się, jeśli $(this)jest elementem DIV.
Shef

@Shef, to była dla mnie nowa informacja, dzięki. Zredagowałem moją odpowiedź, aby to odzwierciedlić.
Tatu Ulmanen

3
możesz po prostu użyć.parents("div").eq(0)
meo

8

To dostaje rodzic, jeśli jest to div. Wtedy zyskuje klasę.

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meo Oto pytanie.
Daniel West,


0

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")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.