2012-05-30 11 views
7

Digamos que tengo una jerarquía de elementos, con #root en su raíz. Puedo usar $('#root > * > *') para obtener todos sus nietos. ¿Hay alguna manera de que yo pueda hacer eso si ya tengo $('#root')?Selector para nietos, o cómo anclar el selector en un elemento conocido

$('#root').find('* > *') definitivamente no lo es, ya que felizmente "empezará" desde cualquier descendiente por la primera estrella, no solo por los niños #root.

¿Hay alguna función en jQuery que "ancle" en el elemento actual, empezando por sus elementos secundarios o por ella misma? Me ha estado molestando por un tiempo, y no pude encontrar nada similar en los documentos.

+0

'.find() 'es posiblemente el método de jQuery transversal más molesto jamás visto. – BoltClock

Respuesta

13

Puede iniciar la expresión encontrar con otro > (esta sintaxis es documented):

// This is functionally the same as $('#root > * > *') 
$('#root').find('> * > *') 

O llame .children() dos veces: una vez para sus hijos y otra vez por sus nietos:

$('#root').children().children() 
+0

Sí, sabía lo de '.children()', pero ... bueno, no encaja con lo que estoy haciendo, realmente quería lo del selector. Y lo del selector ... wow, nunca pensé en probar eso, eso es increíble. ¿Alguna idea de lo sólido que es? Estoy un poco receloso de que no esté documentado: funciona ahora, pero ¿por cuánto tiempo? – Amadan

+0

@Amadan: No tengo idea de eso ... parece que ha funcionado durante bastante tiempo. – BoltClock

+0

Actualicé esta publicación para reflejar que esta función ya está documentada. – JDB

Cuestiones relacionadas