Tengo una lista ordenable anidada que puede tener elementos añadidos o eliminados dinámicamente y se pueden anidar en niveles n profundos. Al anidar, se inyecta un nuevo elemento ul en cualquier elemento li que se seleccione para ser el padre. El estado inicial de la lista es algo como lo siguiente:Selector de CSS para orientar solo hijos inmediatos y no otros descendientes idénticos
<ul id="parent">
<li id="One"><a href="" class="listLink"><span class="position">1</span>One</a></li>
<li id="Two"><a href="" class="listLink"><span class="position">2</span>Two</a></li>
<li id="Three"><a href="" class="listLink"><span class="position">3</span>Three</a>
<ul>
<li id="A"><a href="" class="listLink"><span class="position">1</span>A</a></li>
<li id="B"><a href="" class="listLink"><span class="position">2</span>B</a></li>
<li id="C"><a href="" class="listLink"><span class="position">3</span>C</a></li>
<li id="D"><a href="" class="listLink"><span class="position">4</span>D</a></li>
<li id="E"><a href="" class="listLink"><span class="position">5</span>E</a></li>
<li id="F"><a href="" class="listLink"><span class="position">6</span>F</a></li>
</ul>
</li>
<li id="Four"><a href="" class="listLink"><span class="position">4</span>Four</a></li>
<li id="Five"><a href="" class="listLink"><span class="position">5</span>Five</a></li>
<li id="Six"><a href="" class="listLink"><span class="position">6</span>Six</a></li>
</ul>
estoy usando MooTools que ver el tipo, etc., y funciona bien, pero estoy teniendo problemas para restablecer el texto de la posición correcta en la especie . Cada selector de CSS que trato de usar también incluye todos de los niños en lugar de solo los elementos li que pertenecen a la lista y no pertenecen a las sublistas. Supongamos que, a excepción del ID, la posición y el texto, cada elemento li en todas las listas es idéntico a todos los demás. ¿Hay un selector para obtener solo a los hijos inmediatos? Hay otra manera de hacer esto?
Probé algunos selectores de hijos como las mencionadas:
ul > li
seleccionará todos los elementos li que son un niño de un ul, no sólo los hijos inmediatos#parent > li
hace lo mismo que el anterior .
Aquí está la función que estoy ejecutando cuando se tira un elemento, que no maneja la clasificación, que funciona bien, simplemente actualizando la posición. Tenga en cuenta que también es MooTools sintaxis:
var drop = function(el){
el.getParents('ul').reverse().each(function(item){
var posCount = 1;
item.getElements('li a span[class=position]').each(function(pos){
pos.set('text', posCount);
posCount++;
});
});
}
Actualmente, el cambio de cualquier orden de los elementos en el nivel principal volverá a numerar todo 1-12, incluso las sublistas. El cambio de cualquier elemento en una sublista dará los números correctos para esa lista, pero hará que las listas principales cuenten incorrectamente todos los elementos secundarios li en la numeración.
Siento que este es un truco feo, pero funciona:
var drop = function(){
var ulCount = 1;
$$('ul').each(function(item){
if(item.get('id') != 'parent') {
item.set('id', 'id-'+ulCount);
}
var elId = item.get('id');
var posCount = 1;
$(document).getElements('#'+elId+'>li>a>span[class=position]').each(function(pos){
pos.set('text', posCount);
posCount++;
});
ulCount++;
});
}
Gracias, pero MooTools maneja el problema IE6, por lo que no es lo que busco. Estoy buscando una manera de restablecer el texto de los tramos para indicar la posición correcta para esa lista, pero no las listas principales o secundarias, que es donde está surgiendo el problema. – VirtuosiMedia
#parent> li solo lo hacen los niños inmediatos . Tienes algo más en juego si eso no funciona. Más información es probablemente requerida. – cletus
MooTools me permite usar los selectores de CSS3, pero como no he podido cambiar solo a los secundarios inmediatos, también cambia incorrectamente los números de todas mis sublistas. – VirtuosiMedia