Как удалить "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();​