2012-06-27 27 views
11

conside continuación html -primer elemento padre en jQuery

<div class="container1"> 
    <div class="container2"> 
     <div class="container3"> 
     <div class="container4"> 
      <div class="element"> 
      ... 
     </div> 
     </div> 
    </div> 
</div> 

si desea obtener <div class="element"> elemento y tengo referencia a la container1. En jQuery lo que hago es,

$(".container1").find(".element") 

en lugar de -

$(".container1").children().children().children().find(".element") 

Este es el proceso de encontrar cualquier elemento secundario cuando tengo referencia a cualquiera de los elemento padre. Pero en lugar cuando tengo referencia a un elemento hijo y quiero conseguir elemento padre entonces cada vez que tenga que ir a un nivel superior -

$(".element").parent().parent().parent().parent() 

y no puedo hacer como esto -

$(".element").findParent() 

No he encontrado ningún método como findParent() en jquery. ¿Hay algo de lo que no estoy enterado? ¿O no está allí por alguna razón?

Respuesta

27
$(".element").parents(); 

dará todos los padres de .element(incluyendo html y body)

DEMO

Para encontrar cualquier padre específica, supongamos container1 continuación

$('.element').parents('.container1') 

DEMO

jQuery .parents() en general, encontrar todos los padres, pero si usted pasó un selector entonces será buscar eso.

+0

Eso es perfecto, por qué no llegué a saber sobre eso. – Ashwin

+1

Dang, me ganaste para publicar esto. : P – transparent

+0

@MotaBOS gracias, amigo – thecodeparadox

14

sólo tiene que utilizar

$(".element").closest('#container1'); 

si ningún ancestro con ese id se encuentra a continuación

$(".element").closest('#container1').length habrá 0

1

Para obtener el primer padre personalmente utilizo la siguiente construcción:

var count_parents = $(".element").parents().length; 
$(".element").parents().eq(count_parents - 1); 

Esperanza, que será útil para alguien.

Cuestiones relacionadas