Как я могу добавить элемент списка в порядке с помощью jQuery?

Я нашел ответ благодаря @Dustin Ingram. Я должен ввести:

!python3 -m spacy download en_core_web_sm

при использовании python 2 отбросьте "3" от конца Python в команде выше!

9
задан Chris Conway 19 May 2009 в 13:22
поделиться

3 ответа

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

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 либо вставит его перед этим элементом, либо в конец списка.

(Это, конечно, предполагает, что значения вашего списка уже в порядке .)

7
ответ дан 4 December 2019 в 22:29
поделиться

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

0
ответ дан 4 December 2019 в 22:29
поделиться

I don't think there is an easy way with core jQuery at least.

Off the top of my head, untested, something simple like this might work if your list is short (since its 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); }
0
ответ дан 4 December 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: