2008-12-18 7 views
16

Dado un elemento DOM, ¿cómo puedo encontrar el padre más cercano con una clase css dada?Encontrar el padre apropiado con jQuery

$(".editButton").click(function() { 
    (magic container selector goes here).addClass("editing"); 
}); 

no quiero utilizar lotes o $ (...). Parent(). Parent() ya no quiero estar ligado a una estructura dom particular.

Respuesta

31

Esto debería funcionar

$(this).parents('.classYouWant:first').addClass("editing"); 
+1

No estoy en lo cierto al pensar que todas las funciones de jquery en realidad devuelven una lista. Si es así, es posible que desee hacer $ (esto) .parents ('. ClassYouWant: first') (pruébelo!) – Jennifer

+0

@Jennifer: Está en lo cierto, si el elemento tenía más de un elemento primario, se establecería la edición en todos ellos. Deberías haber publicado una respuesta. Lo aceptaría. –

+0

Entonces, primero, en este ejemplo, obtiene el padre más cercano a $ (esto) con .classYouWant? Entonces, ¿está funcionando ARRIBA el DOM? –

2

Usted puede usar la selección de los padres. por ejemplo, $(".myclass:parent").something(); encontrará todos los elementos con la clase myclass que tienen hijos.

+0

Aunque es correcto, no aborda la pregunta ya que no encuentra el padre de un elemento dom en particular. –

11
$(this).closest('.yourselector') 

Como su nombre lo dice, se encuentra el antepasado más cercano para this elemento.

+0

+1 Esta es mi preferencia, cuando sé que estoy solo después de 1 elemento – Evildonald

Cuestiones relacionadas