Я пытаюсь вставить элемент li в определенный индекс элемента ul с помощью jQuery. Кажется, я могу вставить элемент только в конец списка. Я новичок в jQuery, поэтому, возможно, я просто не думаю должным образом.

Попробуйте что-то вроде этого:
$("#thelist li").eq(3).after("<li>A new item</li>");
С помощью функции eq вы можете получить определенный индекс извлеченных элементов ... затем вставить новый элемент списка после него.
В приведенной выше функции я вставляю новый элемент в позицию 4 (индекс 3).
Больше информации о функции на Документы jQuery
Привет, ты сменил имя! (извините, я только что заметил ^^)
хе-хе ага, к имени добавил свою фамилию =)
К сожалению, этот подход не позволяет добавить элемент с индексом 0.
@Andrew: Добавить элемент в индекс 0 можно легко с помощью метода .prepend ().
Попробуйте использовать этот метод .. это самый простой способ вставить текст внутри элемента ..
<div id = "test"></div>
$('#test').append();
Подобно ответу Дреаса, но немного отличается и, возможно, более эффективно:
$("#thelist li:eq(2)").after("<li>new item</li>");
Или по-другому:
$("<li>new item</li>").insertAfter("#thelist li:eq(2)");
Мне также нравится использовать eq в качестве селектора. И это хорошо объясняет разницу между after и insertAfter.
Простой плагин jQuery (небольшой набор тестов), который позволяет добавлять элемент по любому индексу, включая 0.
$.fn.insertAt = function(index, $parent) {
return this.each(function() {
if (index === 0) {
$parent.prepend(this);
} else {
$parent.children().eq(index - 1).after(this);
}
});
}
Предположим, у нас есть следующий HTML:
<ul id = "items">
<li>A</li>
</ul>
Тогда вставка элемента с индексом 0 $('<li>C</li>').insertAt(0, $('#items')) приведет к
<ul id = "items">
<li>C</li>
<li>A</li>
</ul>
При вставке другого элемента, на этот раз с индексом 1 $('<li>B</li>').insertAt(1, $('#items')) дает
<ul id = "items">
<li>C</li>
<li>B</li>
<li>A</li>
</ul>
Заявление об ограничении ответственности: нет обработки ошибок входных параметров. Если index отрицательный или больше длины дочерних элементов, или если index не является числом, поведение более или менее неопределенно. Если $parent не является объектом jQuery, insertAt завершится ошибкой.
Это должен быть ответ, потому что он также охватывает индекс 0, что было бы невозможно с after или insertAfter.
А как насчет insertAfter () и insertBefore (): api.jquery.com/insertAfter & api.jquery.com/insertbefore