Question

En utilisant jQuery, comment puis-je supprimer toutes les lignes d'une table à l'exception de la première? Ceci est mon premier essai à l'aide de sélecteurs d'index. Si je comprends bien les exemples, ce qui suit devrait fonctionner:

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

qui je lire comme « Envelopper certaines table dans un objet jQuery, puis supprimer tous les éléments « tr »(lignes) où l'indice d'élément de ces lignes est supérieure à zéro ». En réalité, il exécute sans générer une erreur, mais ne supprime pas toutes les lignes de la table.

Qu'est-ce que je manque, et comment puis-je résoudre ce problème? Bien sûr, je pourrais utiliser javascript droit, mais je vais avoir tellement de plaisir avec jQuery que je voudrais résoudre ce en utilisant jQuery.

Était-ce utile?

La solution

Cela devrait fonctionner:

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

Autres conseils

Je pense que cela est donné l'intention plus lisible:

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

L'utilisation des enfants prend également en charge le cas où la première ligne contient une table en limitant la profondeur de la recherche.

Si vous aviez un élément TBODY, vous pouvez faire ceci:

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

Si vous avez des éléments THEAD ou tfoot vous aurez besoin de faire quelque chose de différent.

Une autre façon d'y arriver est d'utiliser la fonction vide () de jQuery avec les éléments thead et tbody dans votre table.

Exemple de tableau:

<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>

Et la commande jQuery:

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

Cela supprimera toutes les lignes contenues dans l'élément tbody de votre table et de garder l'élément thead où devrait être votre tête. Il peut être utile lorsque vous voulez rafraîchir seulement le contenu d'une table.

Si c'était moi, je serais probablement faire bouillir à un seul sélecteur:

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

Votre sélection n'a pas besoin d'être à l'intérieur de votre supprimer.

Il devrait ressembler à:

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

Ce qui signifie sélectionner chaque ligne, sauf la première dans la table avec ID de tableID et les retirer du DOM.

Considérons une table id tbl: le code jQuery serait:

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

Je me souviens à venir dans cette « tranche » est plus rapide que toutes les autres approches, si juste de le mettre ici.

Pour supprimer toutes les lignes, sauf la première (sauf en-tête), utilisez le code ci-dessous:

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

-Désolé c'est réponse très tard.

La façon la plus simple que j'ai trouvé supprimer une ligne (et toutes les autres lignes par itération) est ce

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

Le reste est facile.

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

enveloppé dans une fonction:

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

puis l'appeler:

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

Cela fonctionne parfaitement

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

Cela a fonctionné de la façon suivante dans mon cas et fonctionne bien

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

Meilleure façon:

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

-Premier référence à la table
-obtenir de la liste d'éléments et de le découper en tranches, et retirer les éléments sélectionnés de la liste

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top