JQuery, encuentra padre

3 minutos de lectura
<ul><li><div><div><span id="thisid"></span></div></div></li></ul>

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

eso obviamente no funciona, pero ¿cómo tomo el elemento li? No quiero usar:

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

No quiero usarlo, porque puede suceder que solo haya un elemento div, en lugar de dos. En este caso, tomaría el elemento ul en lugar del elemento li.

avatar de usuario
Andy E.

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

Tenga en cuenta que si solo desea el primero <li> elemento en la ascendencia, debe utilizar closest():

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

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

  • Los cuatro ejemplos son excelentes soluciones.

    – Moisés

    17 de enero de 2011 a las 22:19

  • Solo quería dejar en claro que el singular “padre ()” es una llamada de función válida; simplemente no hace lo que necesitaba el autor de la pregunta.

    – mwardm

    18 de abril de 2013 a las 15:58


  • Esta solución funciona de maravilla, solo quiero señalar una advertencia: .closest() también comprueba el elemento real desde el que se llama: si el elemento tiene el mismo selector que el padre solicitado, no funcionará. necesitas usar .parents() En tal caso. Para mi, .parents('someSelector').eq(0) funcionó muy bien.

    – j4v1

    23 de septiembre de 2020 a las 21:23


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

o si solo quieres el primero:

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

avatar de usuario
generalhenry

$('li').has('#thisid')

http://api.jquery.com/has/

  • alternativa interesante, aunque potencialmente mucho más lenta

    – davin

    17 de enero de 2011 a las 22:10

sencillo, uso parents()

var parents = $("#thisid").parents('li');

$('#thisid').parents( 'li:eq(0)' ); 

Deberías hacerlo. Esto le dará la primera (:eq(0)) principal que coincida con la etiqueta que está buscando.

avatar de usuario
Syed Uzair Uddin

Prefiero los ‘más cercanos’ que los ‘padres’.

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

dónde

Más cercano Viaje hacia arriba en el árbol DOM hasta que encuentre una coincidencia para el selector proporcionado.

Lo más importante es lo que dan como resultado:

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

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

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

Siga este enlace

avatar de usuario
Richard Marskell – Drackir

Es posible que desee utilizar $("#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 padre y devuelve todos los nodos antecesores que coinciden con ese filtro. Ver aquí para más información.

¿Ha sido útil esta solución?