JQuery удалить все строки таблицы, кроме первой - PullRequest
269 голосов
/ 16 декабря 2008

Как с помощью jQuery удалить все строки в таблице, кроме первой? Это моя первая попытка использования селекторов индекса. Если я правильно понимаю примеры, должно работать следующее:

$(some table selector).remove("tr:gt(0)");

, который я бы прочитал как «Обернуть некоторую таблицу в объект jQuery, затем удалить все элементы tr (строки), где индекс элемента таких строк больше нуля» В действительности он выполняется без генерации ошибки, но не удаляет строки из таблицы.

Чего мне не хватает, и как мне это исправить? Конечно, я мог бы использовать прямой javascript, но мне так весело с jQuery, что я бы хотел решить эту проблему с помощью jQuery.

Ответы [ 14 ]

486 голосов
/ 16 декабря 2008

Это должно работать:

$(document).ready(function() {
   $("someTableSelector").find("tr:gt(0)").remove();
});
108 голосов
/ 16 декабря 2008

Я думаю, что это более читабельно, учитывая намерение:

$('someTableSelector').children( 'tr:not(:first)' ).remove();

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

Если у вас был элемент TBODY, вы можете сделать это:

$("someTableSelector > tbody:last").children().remove();

Если у вас есть элементы THEAD или TFOOT, вам нужно будет сделать что-то другое.

37 голосов
/ 08 ноября 2011

Еще один способ сделать это - использовать функцию empty () jQuery с элементами thead и tbody в вашей таблице.

Пример таблицы:

<table id="tableId">
<thead>
    <tr><th>Col1</th><th>Col2</th></tr>
</thead>
<tbody>
    <tr><td>some</td><td>content</td></tr>
    <tr><td>to be</td><td>removed</td></tr>
</tbody>
</table>

И команда jQuery:

$("#tableId > tbody").empty();

Это удалит все строки, содержащиеся в элементе tbody вашей таблицы, и сохранит элемент thead там, где должен быть ваш заголовок. Это может быть полезно, когда вы хотите обновить только содержимое таблицы.

36 голосов
/ 16 декабря 2008

Если бы это был я, я бы, наверное, свел его к одному селектору:

$('someTableSelector tr:not(:first)').remove();
29 голосов
/ 16 декабря 2008

Ваш селектор не обязательно должен быть внутри вашего удаления.

Это должно выглядеть примерно так:

$("#tableID tr:gt(0)").remove();

Что означает выделение каждой строки, кроме первой в таблице с идентификатором tableID, и удаление их из DOM.

6 голосов
/ 25 июня 2013
$('#table tr').slice(1).remove();

Я помню, что натолкнулся на этот «срез» быстрее, чем все другие подходы, поэтому просто поместите его здесь.

6 голосов
/ 10 марта 2012

Рассмотрим таблицу с идентификатором tbl: код jQuery будет:

$('#tbl tr:not(:first)').remove();
1 голос
/ 03 декабря 2015

Чтобы удалить все строки, кроме первой (кроме заголовка), используйте следующий код:

$("#dataTable tr:gt(1)").remove();

0 голосов
/ 24 мая 2019

Самый простой способ:

$("#mytable").find($("tr")).slice(1).remove()

Первая ссылка на таблицу
- получить список элементов, нарезать его и удалить выбранные элементы списка

0 голосов
/ 16 мая 2018

Это работает следующим образом в моем случае и работает нормально

$("#compositeTable").find("tr:gt(1)").remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...