如何使用jQuery按顺序添加列表项?

9
有没有人知道如何使用jQuery将项目按字母顺序添加到列表中? 我有下面的代码,它只是从下拉框中将项目添加到列表的末尾:
$("#projectList").append(
    "<li>"
    + $("#Projects :selected").text()
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>"
);

我希望能够将其插入到适当的位置,而不仅仅是附加到现有列表的末尾。

非常感谢任何帮助! 谢谢!

4个回答

7
我认为这个方法可行:
var new = $(
    "<li>"
    + $("#Projects :selected").text()
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>"
);

var firstafteritem = $("#projectList").children().filter( function () {
    return ($(this).text() > $("#Projects :selected").text())
} ).eq(0);

if (firstafteritem.length > 0) firstafteritem.before(new);
else                           $("#projectList").append(new);
firstafteritem 的值将是在你添加的项之后具有文本值的第一个列表项。(如果它是最后一个,则没有。)然后,if/else 语句将在该项之前或列表末尾插入它。当然,这假设您的列表值已经有序。

1
<script type="text/javascript">
     $(document).ready(function(){
     $("#doctype li:first").before("<li><a href='intranet/library'>All documents</a></li>");
     });
</script>

2
欢迎来到StackOverflow,@irshad。花点时间了解如何格式化您的答案:http://stackoverflow.com/editing-help =) - David Thomas

0

至少使用核心jQuery,我认为没有简单的方法。

凭借我的经验,如果您的列表很短(因为它的O(N)),以下未经测试的简单代码可能有效。

var liArr=$("#projectList li").get();
var newText=$("#Projects :selected").text();
var newEle=$("<li>"
    + newText
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>");
for(var li=0; li<liArr.length; li++) {
  if(newText<liArr[li].innerHTML) {
     $("#projectList").get(0).insertBefore(newEle,liArr[li]);
     newEle=null;
     break;
     } 
  }
if(newEle) { $("#projectList").append(newEle); }

0

您可以解析列表以查看应将项目添加到何处,然后使用after() jQuery函数将您的项目放置在该位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接