按字母顺序对可排序列表中的元素进行排序,超过13项

我正在使用jQuery UI创建多个互连的可排序列表

html:

Unassigned
  • Frank Smith

等等……几个相同的

jQuery:

 // create the sortable ui $(".connectedSortableUl").sortable({ connectWith: ".connectedSortableUl", placeholder: "ui-state-highlight", create: function(event, ui) { sort(); } }); // custom sort function to sort our sortable lists function sort() { var sortableLists = $('.connectedSortableUl'); $(sortableLists).each(function(index, element) { var listitems = $('li', element); listitems.sort(function(a, b) { var seeA = $(a).text().toUpperCase(); //just to see what's going on var seeB = $(b).text().toUpperCase(); //just to see what's going on return ($(a).text().toUpperCase() > $(b).text().toUpperCase()) }); $(element).append(listitems); }); } 
  • 我希望这个函数按字母顺序对每个列表进行排序,顶部为A,底部为Z.
  • 使用短列表,13个或更少的项目,此function按预期工作。
  • 但是,如果列表包含14个或更多项,则会出现故障并且列表现在按预期更长时间排序。

为什么逻辑分解超过13个列表项,我可以做些什么来修复它或以其他方式达到预期的结果?

jsFiddle示例

将两个字符串与>进行比较会返回一个布尔值,但sort需要一个数字。 与localeCompare比较:

 listitems.sort(function (a, b) { var ta = $(a).text().toUpperCase(); var tb = $(b).text().toUpperCase(); return ta.localeCompare(tb); });