Estoy tratando de tomar una estructura de listas desordenadas html anidadas como una base de datos para cierta información que es necesario organizar y analizar. Intento filtrar, contar y presentar la información usando jQuery. Me esfuerzo por que las listas no tengan ningún atributo de clase o id, para que estén muy limpias. Sólo la raíz tendría una clase o identificador de la siguiente manera:Jquery: seleccione texto inmediato sin seleccionar texto de niños ul
<ul id="root">
<li> First first-level element
<ul>
<li> First second-level element
<ul>
<li>First Third-level element</li>
<li>Second Third-level element</li>
</ul>
</li>
<li> Second second-level element
<ul>
<li>Third Third-level element</li>
<li>Fourth Third-level element</li>
</ul>
</li>
</ul>
</li>
<li> Second first-level element
<ul>
<li> Third second-level element
<ul>
<li>Fifth Third-level element</li>
</ul>
</li>
</ul>
</li>
</ul>
Mi pregunta es: ¿cómo puedo seleccionar nodo de texto secundario inmediato de una li sin seleccionar texto en hijo y el nieto de UL (es decir, sus sublistas) de que li? Por ejemplo, dada la lista HTML anterior, me gustaría ser capaz de llegar con una lista de todos los nodos de texto en el segundo nivel:
- Primera segundo nivel elemento
- segundo elemento de segundo nivel
- tercer elemento de segundo nivel
O todo el texto del tercer nivel ... etc, que me permitiera lista y contar los elementos de un nivel determinado. Lo más cerca que he estado es:
// to select items in second but not third level
$('ul#root ul').not('ul#root ul ul').children('li')
Pero no es una solución flexible. ¿Qué pasa si la lista tiene muchos niveles, digamos siete? para seleccionar sexto nivel que tendría que hacer algo como:
// to select items in second but not third level
$('ul#root ul ul ul ul ul').not('ul#root ul ul ul ul ul ul').children('li')
debe haber otra manera, pero no he encontrado. Cualquier sugerencia es muy apreciada.
¿Alguna noticia aquí? – headkit