Как оптимальным образом удалить n или количество первых или последних элементов с помощью jQuery? - PullRequest
16 голосов
/ 25 февраля 2012

У меня есть таблица с множеством строк (+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 последних ячеек. Есть идеи, как оптимизировать код?

Редактировать: Я также добавил первый пункт.

Ответы [ 3 ]

27 голосов
/ 25 февраля 2012

Оптимальным может быть использование nth-last-child.

table.find("tr td:nth-last-child(-n+10)").remove();​

Преимущество заключается в том, что будет использоваться внутренний механизм выбора CSS браузера (или в случае IE jQuery немного поможет :) Вот демоверсия , удаляющая последние 3 элемента. Измените его на 10 в вашем случае.

0 голосов
/ 25 февраля 2012

Вы можете использовать Больше, чем селектор. Он выбирает все элементы с индексом, превышающим индекс в соответствующем наборе. Сначала рассчитайте количество элементов (тд). Вычтите 10, а затем используйте больше, чем селектор.

0 голосов
/ 25 февраля 2012

В качестве альтернативы вы можете попробовать это.

var n = 3;
var len = table.find('tr').length;
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();​
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...