jquery可排序,更改项目序列

时间:2013-08-28 13:08:48

标签: jquery-ui jquery-ui-sortable

是否可以重新排序可排序列表中的项目而不拖动它们? 例如,如果我有一个项目列表,比如1,2,3,我点击一个链接(一个按钮 - 无论如何),列表现在是3,1,2。 也许我不应该为此使用“可排序”?

1 个答案:

答案 0 :(得分:0)

假设您有以下HTML:

<ul id="sortable" class="ui-sortable">


    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
    <li class="ui-state-default" style=""><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li><li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li><li class="ui-state-default" style=""><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
    <li class="ui-state-default" style=""><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li><li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>

</ul>

您可以通过调用以下函数来重新排序列表项而不拖放:

function shuffle(){
    var myList = $('ul'); //Fetch the list.
    var listItems = myList.children('li'); //Extract all listItems from it.
    listItems.sort(function(a,b){ //This function sorts the items.
        var compA = $(a).text().toUpperCase();
        var compB = $(b).text().toUpperCase();
        return (compA < compB) ? -1 : 1; //return a -1 or 1 depending upon specific condition.
    });
    $(myList).append(listItems);
}

您可以使用任何简单的按钮调用该功能,例如:

<button onclick="shuffle();">Reorder</button>

You can see a sample implementation here.