2010-10-13 9 views
6

heno, tengo algunas marcas como estojQuery encadenando padre(), ¿hay alguna manera más fácil?

<div id="some-id"> 
    <h2><a href="#">Title</a></h2> 
</div> 

y un poco de jQuery como éste

$(this).parent().parent().attr("id") 

$ (este) se refería a la 'una' etiqueta dentro de la 'h2'

¿Hay una manera más fácil de seleccionar el div principal sin usar parent() dos veces? Intenté

$(this).parent("div").attr("id") 

pero no funcionó.

Gracias

Respuesta

14

Puede utilizar .closest(), como este:

$(this).closest("div").attr("id") 

You can test it here. .parent("div") no es tan intuitivo como parece, se pone solamente la inmediata padres si coincide con el selector .closest(), sube los padres hasta que coincida con el selector.

Tenga en cuenta que (no se aplica a este ejemplo) si this coincide con el selector, devuelve que elemento, no inicio con el primer padre, comienza con ella misma.

+0

¿.closest() sube solo? ¿O se moverá hacia abajo también? – dotty

+0

@dotty - Solo va para los padres, si quieres que los niños usen '.find()', aunque solo puedes tener una ruta principal, los niños pueden tener muchas ramas ... así que depende de lo que estés buscando. –

Cuestiones relacionadas