按字母顺序对可排序列表中的元素进行排序,超过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); });