У меня есть два упорядоченных списка рядом друг с другом.
Когда я беру node из одного списка, я хочу вставить его в алфавитном порядке в другой список. Уловка состоит в том, что я хочу извлечь только один элемент и поместить его обратно в другой список, не обновляя весь список.
Странно то, что когда я вставляю в список справа, он отлично работает, но когда я вставляю обратно в список слева, порядок никогда не выходит правильно.
Я также пробовал читать все в массив и сортировать его там, только если метод children() не возвращает вещи в том порядке, в котором они отображаются, но я все равно получаю те же результаты.
Вот мой 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");
});
}
}
Вот что выглядит мой html:
<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>