2011-02-28 9 views

Respuesta

17

El método closest realmente busca el árbol (a pesar de lo que dice la documentación), pero sé lo que quiere decir. Quieres uno que busque entre los hijos del elemento. Dependiendo de la forma en que desea buscar:

$('#Id').children('div'); 

o

$('#Id').find('div'); 
+7

Los árboles DOM siempre se representan al revés, raíz en la parte superior. Así que no piense que la documentación está equivocada cuando dice que el método más cercano() busca ARRIBA. – Martin

+3

@Martin: La jerarquía DOM no se debe describir como un árbol si no se puede visualizar como un árbol. Un árbol invertido es solo una imagen confusa. – Guffa

+0

Árbol extra confuso, con un árbol real y el cuerpo en la parte superior: http://www.google.com/imgres?hl=es&client=firefox-a&hs=v9m&sa=X&rls=org.mozilla:en-GB:official&biw = 1286 & bih = 843 & tbm = isch & prmd = imvns & tbnid = PY2EsxpAYGXCGM: & imgrefurl = http: //www.netmagazine.com/tutorials/tripping-dom-fantastic-jquery&docid=hdEf0OIxpYncuM&imgurl=http: //media.netmagazine.futurecdn.net/files/images /2011/10/ttdf_1.jpg&w=615&h=448&ei=G2W7T63aCcmm4gT9x_nFDg&zoom=1&iact=hc&vpx=201&vpy=245&dur=734&hovh=192&hovw=263&tx=141&ty=88&sig=109711706115399555167&page=4&tbnh=146&tbnw=200&start=71&ndsp=26&ved=1t:429,r : 21, s: 71, i: 281 – Guffa

6

Puede usar el método find(). Y obtenga el elemento first del conjunto resultante.

1

$('#Id div:first') qué también lo que están buscando.

Tenga en cuenta que mientras más cercano() solo devuelve un elemento, find(), children() y también $ ("# Id div") devuelve todos los elementos coincidentes, por lo que debe agregar .first() o: first para reducir el resultado a la primera ocurrencia.

0

En caso de que alguien necesite buscar ARRIBA, es fácil con el método .parents().

Puede dejarlo vacío, o especificar selectores como .parents ("div").

0

Lo más cercano es buscar UP relacionado con la documentación "Para cada elemento del conjunto, obtenga el primer elemento que coincida con el selector probando el elemento y atravesando sus antepasados ​​en el árbol DOM" y como puede ver " El método .children() difiere de .find() en que .children() solo recorre un único nivel en el árbol DOM, mientras que .find() puede recorrer varios niveles para seleccionar elementos descendientes (nietos, etc.) también ". No encontré una buena solución para closest porque lo bueno de closest es que deja de buscar elementos cuando encuentra el primer selector coincidente y find continúa buscando. Entonces, lo que puedes hacer es usar el filtro .first().

$('selector').first(); 

O

obj.find('selector').first(); 

Será encontrar una coincidencia de elementos múltiples, pero devolverá sólo el primer elemento como closest pero menor rendimiento.

https://api.jquery.com/first/

Cuestiones relacionadas