首页 > 解决方案 > SortableJS 列表和固定/锁定项目

问题描述

我需要创建一个可排序的拖放列表,其中可以固定一个或多个位置以及链接模型:

http://jsfiddle.net/euo4tfcz/

var locktos = [];
$(document).ready(function() {
    $("#sortable li.static").each(function () {
      locktos.push($(this).index());
        $(this).attr("id", "static-" + $(this).index());
    }); 
    alert($("#sortable li").eq(locktos[1]).attr("id"));
});
$("#sortable").sortable({
    "cancel":"li.static",
    "change":function(event,ui) {
       // var locktos = [1, 5];
       for(i=0;i<locktos.length;i++) {
           console.log(locktos[i]);
            var thisindex = $(ui.helper).index();         
            var fixed = $("#static-"+locktos[i]);           
            var index = fixed.index();
            var targetindex = locktos[i]+1;
           console.log(index + ", targetindex: " + targetindex);
            if(index !== targetindex) {         
                if(index > targetindex ) {
                    fixed.prev().insertAfter(fixed); //move it up by one position
                } else if(index==(targetindex-1) && thisindex>targetindex) {
                    //don't move it at all
                } else {
                    fixed.next().insertBefore(fixed); //move it down by one position
                }
            } else if(index==targetindex && thisindex>targetindex) {
                fixed.prev().insertAfter(fixed); //move it up by one position
            }  
           
    }
    }
});
ul > li {display:block;height:15px;width:100px;background:#ccc;margin:2px;padding:3px;border:1px solid #aaa;}
<ul id="sortable">
    
    <li>oranges</li>
    <li class="static">apples</li>
    <li>bananas</li>
    <li>pineapples</li>
    <li>grapes</li>
    <li class="static">pears</li>
    <li>mango</li>
</ul>

但我需要使用来自http://sortablejs.github.io/Sortable/下面这个链接的 SortableJS 插件来做到这一点

标签: javascriptsortablejs

解决方案


推荐阅读