2011-01-17 10 views
39
<ul><li><div><div><span id="thisid"></span></div></div></li></ul> 

$('#thisid').parent('li'); 

que obviamente no funciona, pero ¿cómo atrapo el elemento li? No quiero usar:JQuery, encuentre el padre

$('#this').parent().parent().parent(); 

no quiero usarlo, ya que puede suceder que no es sólo un elemento div, en lugar de dos. En este caso, tomaría el elemento ul en lugar del elemento li.

Respuesta

76
$('#thisid').parents('li'); 
//    ^plural! 

Tenga en cuenta que si solo deseas la primera <li> elemento de la ascendencia, usted debe utilizar closest():

$('#thisid').closest('li'); 

// `closest()` is equivalent to (but performs better than) 
$('#thisid').parents('li').eq(0); 
$('#thisid').parents('li').first(); 
+2

Los cuatro ejemplos son grandes soluciones. – Moses

+0

Solo quería dejar en claro que singular "parent()" * es * una llamada a función válida; simplemente no hace lo que el pregunta-asker estaba necesitando. – mwardm

1

simple, utilice parents()

var parents = $("#thisid").parents('li'); 
2
$('#thisid').parents('li:eq(0)'); 

debe hacerlo. Esto le proporcionará el primer padre (:eq(0)) que coincida con la etiqueta que está buscando.

6
$('#thisid').parents('li') 

o si sólo desea que el primero de ellos:

$('#thisid').closest('li') 
0

en realidad podría querer usar $("#thisid").closest('li'). Esto atraviesa el árbol DOM desde el nodo seleccionado y devuelve el primer ancestro coincidente mientras que el .parents() viaja desde el nodo principal y devuelve todos los nodos ancestrales que coincidan con ese filtro. Consulte here para obtener más información.

1

Prefiero los "más cercanos" que los "padres".

Los padres viajan por el árbol DOM hasta el elemento raíz del documento, agregando cada elemento ancestro a una colección temporal; luego filtra esa recolección en función de un selector, si se proporciona uno.

donde

viaje más cercano al árbol DOM hasta que se encuentra una coincidencia para el selector suministrado.

más importante lo que dan en consecuencia:

Praents: objeto devuelto jQuery contiene cero o más elementos para cada elemento en el conjunto original, en el orden del documento inversa.

más cercano: objeto devuelto jQuery contiene cero o un elemento para cada elemento en el conjunto original, en el orden del documento

$('#thisid').closest('li'); 

Follow this Link

Cuestiones relacionadas