¿Cómo seleccionar el primer DIV principal 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.

El padre en la situación anterior es un ankor.

Si quisiera obtener el primer DIV principal de $ (esto), ¿cómo se vería el código?

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

* Básicamente quiero obtener las clases del primer padre DIV de $ (esto).

Gracias

Respuestas:


161

Úselo .closest()para recorrer el árbol DOM hasta el selector especificado.

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

10
parents("div")está atravesando y devuelve todos los div padre que debe usar .eq(0)después para asegurarse de que devuelva solo el que desea
— meo

3
Recuerde que es mejor para el rendimiento .parents('div').eq(0): usar ese selector de CSS de bolso SEGUIDO por jQuery para filtrar solo el primer elemento le dará un ligero aumento de rendimiento; consulte la sección 'Notas adicionales' en jQuery: eq doc
— Noah Whitmore

@NoahWhitmore Lo arregló. Se usa closest()para que no devuelva todos los padres excepto el divpadre.
— Shef

41

Use .closest(), que obtiene el primer elemento ancestro que coincide con el selector dado 'div':

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

EDITAR:

Como señaló @Shef, .closest()devolverá el elemento actual si también es un DIV. Para tener eso en cuenta, use .parent()primero:

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

5
.closest()coincidirá con sí mismo si $(this)es un elemento DIV.
— Shef

@Shef, esa era información nueva para mí, gracias. Edité mi respuesta para reflejar esto.
— Tatu Ulmanen

3
simplemente podría usar.parents("div").eq(0)
— meo

8

Esto obtiene parent si es un div. Entonces se pone clase.

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

1
@meo Eso es lo que hacía la pregunta.
— Daniel West

3

¡Mantenlo simple!

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

0

dos de las mejores opciones son

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

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

y, por supuesto, puedes encontrar el atributo de clase por

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

$(this).parent().closest('div').attr("class")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.