jQuery удалить все строки таблицы, кроме первой

StackOverflow https://stackoverflow.com/questions/370013

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

$(document).ready(function() {
   $("someTableSelector").find("tr:gt(0)").remove();
});

Другие советы

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

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

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

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

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

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

Другой способ добиться этого — использовать функцию пустой() 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 там, где должен быть ваш заголовок.Это может быть полезно, если вы хотите обновить только содержимое таблицы.

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

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

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

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

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

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

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

$('#tbl tr:not(:first)').remove();
$('#table tr').slice(1).remove();

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

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

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

-Извините, это очень поздний ответ.

Самый простой способ удалить любую строку (и все остальные строки посредством итерации) - это

$('#rowid','#tableid').remove();

Остальное легко.

$("#p-items").find( 'tr.row-items' ).remove();

завернутый в функцию:

function remove_rows(tablename) { 
    $(tablename).find("tr:gt(0)").remove();        
}

затем назовите это:

remove_rows('#table1');
remove_rows('#table2');

Это отлично работает

$("#myTable tbody").children( 'tr:not(:first)' ).html("");

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top