Ho due elenchi ordinati uno accanto all'altro.Uso di jQuery per inserire dinamicamente la lista in ordine alfabetico
Quando togli un nodo da una lista, desidero inserirlo alfabeticamente nell'altra lista. Il problema è che voglio prendere solo un elemento e rimetterlo nell'altro elenco senza aggiornare l'intera lista.
La cosa strana è che quando inserisco nell'elenco a destra, funziona bene, ma quando inserisco nuovamente nell'elenco a sinistra, l'ordine non viene mai eseguito correttamente.
Inoltre ho provato a leggere tutto in un array e smistamento lì solo nel caso in cui il metodo i bambini() non restituisce le cose nell'ordine in cui vengono visualizzati, ma ho ancora ottenere gli stessi risultati.
Ecco il mio jQuery:
function moveNode(node, to_list, order_by){
rightful_index = 1;
$(to_list)
.children()
.each(function(){
var ordering_field = (order_by == "A") ? "ingredient_display" : "local_counter";
var compA = $(node).attr(ordering_field).toUpperCase();
var compB = $(this).attr(ordering_field).toUpperCase();
var C = ((compA > compB) ? 1 : 0);
if(C == 1){
rightful_index++;
}
});
if(rightful_index > $(to_list).children().length){
$(node).fadeOut("fast", function(){
$(to_list).append($(node));
$(node).fadeIn("fast");
});
}else{
$(node).fadeOut("fast", function(){
$(to_list + " li:nth-child(" + rightful_index + ")").before($(node));
$(node).fadeIn("fast");
});
}
}
Ecco ciò che il mio html appare come:
<ol>
<li ingredient_display="Enriched Pasta" ingredient_id="101635" local_counter="1">
<span class="rank">1</span>
<span class="rounded-corners">
<span class="plus_sign"> + </span>
<div class="ingredient">Enriched Pasta</div>
<span class="minus_sign"> - </span>
</span>
</li>
</ol>
Si è provato a utilizzare il debugger per scorrere il codice e assicurarsi che ciascuna funzione (...) di richiamata funzioni correttamente? Gli strumenti di sviluppo Firebug o IE8 funzionano perfettamente per questo. È possibile inserire un punto di interruzione nel corpo della richiamata. – RMorrisey
ho controllato w3c. Non riesco a trovare alcuna menzione degli attributi 'ingredient_display',' ingredient_id' o 'local_counter'. a parte questo, questo è un httml orribile. spero che questo non vada in produzione da qualche parte: \ – Jason
Ho passato attraverso l'uso di firebug e per qualche motivo non tornano nell'ordine corretto per una delle liste ordinate.Forse dovrei andare su getElementById invece. @jason, questo non è per la produzione. Quelli sono attributi definiti dall'utente. Come consiglieresti di aggiustarlo? – Dex