Удаление дочерних элементов с учетом индекса?
У меня есть такой макет:
<div id='parent'>
<div id='row_0'></div>
<div id='row_1'></div>
<div id='row_2'></div>
...
<div id='row_N'></div>
</div>
В какой-то момент я хочу удалить все "строки" div над определенным индексом, например:
for (var index = 1; index < $('#parent').children.length; index++) {
$('#parent').remove('#row_' + index);
}
Есть ли более простой способ сделать это в jquery? Что-то вроде "просто удалите всех детей, начиная с индекса N"?
(выше для цикла не будет работать, но это то, что я сделал бы, если другого пути не было)
Ответы
Ответ 1
"Просто удалите (отсоединить) всех детей #parent
, начиная с элемента N
":
$("#parent").children().slice(N).detach();
Если элементы не будут повторно вставлены, используйте remove()
вместо detach()
, чтобы отбросить данные и события, связанные с удаленными элементами.
Ответ 2
Чтобы удалить строки 0 и 1, выберите строки меньше 2, используя lt selector, а затем remove:
$('#parent div:lt(2)').remove();
Ответ 3
Это старый поток, но мне любопытно, почему никто не упоминал nth-child
.
$("#parent > div:nth-child(n + " + index + ")").remove();
* Обновление: у меня не хватило репутации, чтобы знать его в то время, но был ответ nth-child
, удаленный.