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

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

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

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

有帮助吗?

解决方案

我想这会工作:

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要么该项目之前或在列表的末尾插入。

(这当然,假设你的列表的值已经在顺序。)

其他提示

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

我不认为存在与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); }

您可以分析列表中看到您的项目应该添加,然后使用后()jQuery函数到位添加您的项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top