Come selezionare il DIV del primo genitore usando jQuery?


95
var classes = $(this).attr('class').split(' '); // this gets the current element classes

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

Il genitore nella situazione di cui sopra è un ankor.

Se volessi ottenere il primo DIV genitore di $ (this) come sarebbe il codice?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

* Fondamentalmente voglio ottenere le classi del primo genitore DIV di $ (questo).

grazie

Risposte:


161

Utilizzare .closest()per attraversare l'albero DOM fino al selettore specificato.

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

10
parents("div")sta attraversando e restituisce tutti i div genitore che dovresti usare .eq(0)dopo per assicurarti che restituisca solo quello che desideri
meo

3
Ricorda che è meglio usare le prestazioni .parents('div').eq(0)- usare quel selettore CSS della borsa SEGUITO da jQuery per filtrare solo il primo elemento ti darà un leggero aumento delle prestazioni - vedi la sezione 'Note aggiuntive' sul jQuery: eq doc
Noah Whitmore

@NoahWhitmore Risolto. Usato in closest()modo da non restituire tutti i genitori tranne il divgenitore.
Shef

41

Usa .closest(), che ottiene il primo elemento antenato che corrisponde al selettore dato 'div':

var classes = $(this).closest('div').attr('class').split(' ');

MODIFICARE:

Come notato da @Shef, .closest()restituirà l'elemento corrente se si tratta di un DIV. Per tenerne conto, usa .parent()prima:

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

5
.closest()corrisponderà a se stesso se $(this)è un elemento DIV.
Shef

@ Shef, quella era una nuova informazione per me, grazie. Ho modificato la mia risposta per riflettere questo.
Tatu Ulmanen

3
potresti semplicemente usare.parents("div").eq(0)
meo

8

Questo ottiene genitore se è un div. Poi diventa classe.

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

1
@meo Questo è ciò che la domanda ha posto.
Daniel West

3

Mantienilo semplice!

var classes = $(this).parent('div').attr('class');

0

due delle migliori opzioni sono

$(this).parent("div:first")

$(this).parent().closest('div')

e ovviamente puoi trovare la classe attr di

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.