题
有谁知道如何将项目添加到列表,但做到这一点,所以它使用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函数到位添加您的项目。
不隶属于 StackOverflow