Как я могу добавить элемент списка в порядок, используя jQuery? - PullRequest
9 голосов
/ 19 мая 2009

Кто-нибудь знает, как добавить элемент в список, но сделать это так, чтобы он упорядочивался в алфавитном порядке с помощью jQuery? У меня есть следующий код, который просто добавляет элемент из выпадающего списка в конец списка:

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

но я хотел бы иметь возможность вставить его в соответствующее место, а не просто добавлять в конец существующего списка.

Любая помощь очень ценится! Спасибо!

Ответы [ 4 ]

7 голосов
/ 19 мая 2009

Я думаю, что это будет работать:

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 голос
/ 24 сентября 2010
<script type="text/javascript">
     $(document).ready(function(){
     $("#doctype li:first").before("<li><a href='intranet/library'>All documents</a></li>");
     });
</script>
0 голосов
/ 19 мая 2009

Вы можете проанализировать список, чтобы увидеть, где должен быть добавлен ваш элемент, а затем использовать функцию after () jquery, чтобы добавить ваш элемент на место.

0 голосов
/ 19 мая 2009

Я не думаю, что есть простой способ, по крайней мере, с ядром 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); }
...