9

有谁知道如何将项目添加到列表中,但这样做是为了使用 jQuery 按字母顺序排列?我有以下代码,它只是将下拉列表中的一个项目添加到列表末尾:

$("#projectList").append(
    "<li>"
    + $("#Projects :selected").text()
    + " <span class='removeProject' projectId='" + $("#Projects").val() + "'>Remove</span>"
    + "</li>"
);

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

任何帮助是极大的赞赏!谢谢!

4

4 回答 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 将在该项目之前或列表末尾插入它。

(当然,这假设您的列表中的值已经按顺序排列。)

于 2009-05-19T13:35:20.740 回答
1
<script type="text/javascript">
     $(document).ready(function(){
     $("#doctype li:first").before("<li><a href='intranet/library'>All documents</a></li>");
     });
</script>
于 2010-09-24T12:47:07.333 回答
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); }
于 2009-05-19T13:40:32.447 回答
0

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

于 2009-05-19T13:42:19.637 回答