Как удалить "n" число первых или последних элементов с помощью jQuery оптимальным образом?
У меня есть таблица со многими строками (+50) и ячейками (+50). Теперь я хотел бы удалить n первых или последних ячеек с помощью jQuery. В настоящее время у меня есть следующий код:
var n = 10;
var last = true;
for (var i = 0; i < n; i++) {
table.find('tr').each(function() {
if(last)
$(this).find('td:last').remove();
else
$(this).find('td:first').remove();
});
}
Примечание: table
является элементом jQuery.
Код работает, но работает очень медленно, когда у меня есть таблица с 50 строками с 50 ячейками, и я удаляю 10 последних ячеек. Любые идеи по оптимизации кода?
Изменить: я также добавил первое предложение.
Ответы
Ответ 1
Оптимально, я думаю, можно использовать nth-last-child
.
table.find("tr td:nth-last-child(-n+10)").remove();
Преимущество заключается в том, что будет использоваться механизм селектора CSS браузера (или в случае IE jQuery поможет немного:)
Вот демон удаление последних трех элементов. Измените его на 10 в вашем случае.
Ответ 2
Вы можете использовать Greater Than. Он выбирает все элементы с индексом, большим, чем индекс в согласованном наборе.
Сначала вычислите количество элементов (td). Вычитайте 10, а затем используйте большее, чем селектор.
Ответ 3
В качестве альтернативы вы можете попробовать это.
var n = 3;
var len = table.find('tr').length;
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();