Удалите пустые строки и столбцы в таблице с помощью jQuery - PullRequest
4 голосов
/ 20 декабря 2011

Предположим, у меня есть такая таблица:

+-----------+
| | | | | | |
|-+-+-+-+-+-|
| |a| |b| | |
|-+-+-+-+-+-|
| | | | | | |
|-+-+-+-+-+-|
| |c| |d| | |
|-+-+-+-+-+-|
| | | | | | |
+-----------+

Я хочу удалить все внешние строки и столбцы, которые пусты. Приведенный выше пример будет приведен к следующему:

+-----+
|a| |b|
|-+-+-|
| | | |
|-+-+-|
|c| |d|
+-----+

У меня есть некоторый рабочий код, но он не очень элегантный и, что более важно, запредельно медленный. Мне нужно решение, которое может быстро удалить до 30 посторонних строк и столбцов.

Есть ли быстрый и наполовину приличный способ сделать это?

1 Ответ

9 голосов
/ 20 декабря 2011
var $theTable = $("table#myTable"),
    lookAt    = ["tr:first-child", "tr:last-child", 
                 "td:first-child", "td:last-child"];

for (var i=0; i<lookAt.length; i++) {
  while ( $.trim($(lookAt[i], $theTable).text()) == "" ) {
    $(lookAt[i], $theTable).remove();
  }
}

РЕДАКТИРОВАТЬ: Вы можете использовать это как внутренний цикл, может быть, это немного быстрее:

for (var i=0; i<lookAt.length; i++) {
  while ( var $x = $(lookAt[i], $theTable), $.trim($x.text()) == "" ) {
    $x.remove();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...