J'ai imbriqué liste triable qui peuvent avoir des éléments dynamiquement ajoutés ou supprimés et peuvent être imbriquées n-niveaux de profondeur. Sur la nidification, un nouvel élément ul est injecté dans quel élément li est sélectionnée pour être la mère. L'état initial de la liste est quelque chose comme ce qui suit:
<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>
J'utilise MooTools pour faire le tri, etc et il fonctionne très bien, mais ce que je vais avoir du mal à faire est de réinitialiser la position du texte correctement sur le tri. Chaque sélecteur CSS j'essaie d'utilisation inclut également tous des enfants plutôt que de simplement le li des éléments qui appartiennent à la liste et n'appartenant à des sous-listes. Supposons que, sauf pour l'identification, la position, et le texte, chaque élément li dans toutes les listes est identique à tous les autres. Est-il un sélecteur pour ne prendre que les enfants immédiats? Est-il une autre façon de le faire?
Edit:
J'ai essayé quelques-uns des enfants les sélecteurs comme ceux mentionnés:
- "ul > li" Va sélectionner tous les éléments li qui sont les enfants d'un ul, et pas seulement l'immédiat les enfants
- "#parent > li" Fait la même chose que ci-dessus.
Edit 2:
Voici la fonction que je suis en train de l'avoir exécuté lorsqu'un élément est supprimé (ce qui n'est pas de gérer le tri, qui fonctionne très bien, juste la mise à jour de la position). Notez qu'il est également MooTools syntaxe:
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++;
});
});
}
Actuellement, le fait de changer l'ordre des éléments sur le niveau principal sera renuméroter tout 1-12, même les sous-listes. Changer n'importe quel élément sur une sous-liste vous donnera le bon nombres de cette liste, mais amener les parents des listes d'erreurs de comptage de tous les enfants li éléments dans la numérotation.
Edit 3:
Bon, j'ai l'impression que c'est un vilain hack, mais il fonctionne.
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++;
});
}