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 に答える