【发布时间】:2014-07-16 19:39:42
【问题描述】:
$(document).ready(function() {
$('#new-to-do-item').keyup(function(e) {
if (e.which === 13) {
var text = $(this).val();
var listItem = "<li><input type='checkbox'>" + text + "</li>"
$(listItem).appendTo('.list');
}
});
//sort
$(document).on('click', '#coolthings',function(){
$(".list li").sort(asc_sort).appendTo('.list');
//$("#debug").text("Output:");
// accending sort
function asc_sort(a, b){
return ($(b).text()) < ($(a).text()) ? 1 : -1;
}
});
我有一个最初由 4 个项目组成的列表,#coolthings 是一个元素,当我单击时,它将按字母顺序对这些项目进行排序,但是,keyup 函数将新项目附加到列表中,而 #coolthings 按钮不会将整个列表与新添加的项目一起排序,它将按字母顺序对初始列表进行排序,然后按字母顺序添加新项目,使整个列表由两个字母列表组成。 我想知道如何制作它,以便在我添加具有 keyup 功能的新项目后,排序按钮将按字母顺序对整个列表进行排序。
【问题讨论】:
-
你没有关闭
#coolthings点击事件,这是错字吗? -
看起来您需要先对列表进行排序,然后在正确的索引处插入新项目,而不是添加/附加新项目。这是最有效的动态排序(例如二叉树如何存储数据以进行快速搜索)。
-
@KingKing 但这会破坏使用“排序”按钮的目的,因为您已经建议按字母顺序附加新的 li 项目
标签: javascript jquery html list sorting