javascript - 根据数组对列表项进行排序

标签 javascript jquery-ui-sortable

我的网站生成此列表项从数据库中检索数据:

<ul id="sortable" class="ui-sortable">
    <li id="2" data-order="2" class="ui-state-default ui-sortable-handle" >Data</li>
    <li id="5" data-order="5" class="ui-state-default ui-sortable-handle" >Data</li>
    <li id="15" data-order="15" class="ui-state-default ui-sortable-handle" >Data</li>
    <li id="23" data-order="23" class="ui-state-default ui-sortable-handle" >Data</li>

</ul>




function loadData(){
            $("#ajaxLoader").show();
            $.ajax({
                type:"POST",
                url:"getItinerari.php"
            }).done(function(itinerario_out){
                //console.log(itinerario_out);
                var route = JSON.parse(itinerario_out);
                for(var i in route){
                    var sortableDiv = '<li id="'+ route[i].it_id +'" data-order="'+ route[i].it_id +'" class="ui-state-default" style="">'+ route[i].itinerario +'<a href="edit.php?id='+ route[i].it_id +'"><img src="../images/file_edit.png" alt="Modifica" width="35px" height="auto"></a><a onclick="return deleteConferme();" href="delete.php?it_id='+ route[i].it_id +'"><img src="../images/delete.png" alt="Elimina" width="35px" height="auto"></a></li>';
                    $("#sortable").append(sortableDiv);

                }


                /****sortable*****/
                $('#sortable').sortable({


                    update: function(event, ui) {
                        var arr = $(this).sortable('toArray');
                        var i, n;
                        var datapost = [];
                        for (i = 0, n = arr.length; i < n; i++) {
                            datapost.push($('#' + arr[i]).data('order'));
                        }

                    $.post('saveSortable.php', {list: datapost}, function (o) {
                        alert(o);
                    });

                    }


                });
                /****sortable*****/





                $("#ajaxLoader").hide();
            });
            //fine done

        }

这些项目是可排序的,所以我可以从数据库中获得一个包含最后项目顺序的数组。

var 排序 = [23, 5, 15, 2];

如何在下一页加载根据此数组对项目进行排序? 谢谢

最佳答案

您可以使用 Array.prototype.forEach().appendTo() 迭代数组,以按照数组元素的顺序将元素附加到父元素

var sorted = [23, 5, 15, 2];
sorted.forEach(function(id) {
  $("#" + id).appendTo("#sortable")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="sortable" class="ui-sortable">
  <li id="2" data-order="2" class="ui-state-default ui-sortable-handle">Data 2</li>
  <li id="5" data-order="5" class="ui-state-default ui-sortable-handle">Data 5</li>
  <li id="15" data-order="15" class="ui-state-default ui-sortable-handle">Data 15</li>
  <li id="23" data-order="23" class="ui-state-default ui-sortable-handle">Data 23</li>
</ul>

关于javascript - 根据数组对列表项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41022800/

相关文章:

javascript - 将事件绑定(bind)到 jQuery.post 和回调

jquery - jquery 可排序的奇怪错误 : is not a function

jQuery UI 可排序 : dragged element disappears

javascript - jquery - 根据日期和时间显示/隐藏 div

javascript - 滚动到 UserControl 中的特定 DataList 项

javascript - 在 Jest 中用测试覆盖抽象类方法

javascript - 关于javascript延迟

Jquery UI 可拖动不滚动可排序容器

jQuery 启用防止默认并为列表中的第一个 child 切换事件类

jquery - 如何在 JavaScript 中触发 jQuery-sortable 的 "update"事件?