Avec jQuery, comment puis-je supprimer toutes les lignes d'une table sauf la première? Ceci est ma première tentative d'utilisation de sélecteurs d'index. Si je comprends bien les exemples, ce qui suit devrait fonctionner:
$(some table selector).remove("tr:gt(0)");
que je lirais comme suit: "Enveloppe une table dans un objet jQuery, puis supprime tous les éléments 'tr' (lignes) où l'index d'élément de ces lignes est supérieur à zéro". En réalité, il s'exécute sans générer d'erreur, mais ne supprime aucune ligne de la table.
Qu'est-ce qui me manque et comment résoudre ce problème? Bien sûr, je pourrais utiliser du javascript direct, mais je m'amuse tellement avec jQuery que j'aimerais résoudre ce problème en utilisant jQuery.
Cela devrait fonctionner:
$(document).ready(function() {
$("someTableSelector").find("tr:gt(0)").remove();
});
Je pense que cela est plus lisible compte tenu de l'intention:
$('someTableSelector').children( 'tr:not(:first)' ).remove();
L'utilisation des enfants prend également en charge le cas où la première ligne contient un tableau 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 devrez faire quelque chose de différent.
Une autre façon de faire consiste à utiliser la fonction empty () de jQuery avec les éléments thead et tbody de votre tableau.
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 conservera l'élément thead là où votre en-tête devrait être. Cela peut être utile lorsque vous souhaitez actualiser uniquement le contenu d'un tableau.
Si c'était moi, je le résumerais probablement à un seul sélecteur:
$('someTableSelector tr:not(:first)').remove();
Votre sélecteur n'a pas besoin d'être à l'intérieur de votre retrait.
Cela devrait ressembler à quelque chose comme:
$("#tableID tr:gt(0)").remove();
Ce qui signifie que sélectionnez toutes les lignes sauf la première dans la table avec l'ID de tableID et supprimez-les du DOM.
Considérons une table avec id tbl
: le code jQuery serait:
$('#tbl tr:not(:first)').remove();
$('#table tr').slice(1).remove();
Je me souviens d’avoir découvert que la "tranche" est plus rapide que toutes les autres approches, c’est donc simple.
Pour supprimer toutes les lignes, à l'exception de la première (à l'exception de l'en-tête), utilisez le code ci-dessous:
$("#dataTable tr:gt(1)").remove();
Cela fonctionne parfaitement
$("#myTable tbody").children( 'tr:not(:first)' ).html("");
$ ("# p-items"). find ('tr.row-items') .remove ();
Cela a fonctionné de la manière suivante dans mon cas et a bien fonctionné
$("#compositeTable").find("tr:gt(1)").remove();
enveloppé dans une fonction:
function remove_rows(tablename) {
$(tablename).find("tr:gt(0)").remove();
}
puis appelez-le:
remove_rows('#table1');
remove_rows('#table2');
-Désolé c'est une réponse très tardive.
Le moyen le plus simple que j'ai trouvé pour supprimer une ligne (et toutes les autres lignes par itération) est la suivante:
$ ('# rowid', '# tableid'). remove ();
Le reste est facile.
Manière la plus simple:
$("#mytable").find($("tr")).slice(1).remove()
-première référence à la table
- récupère la liste des éléments, la découpe et supprime les éléments sélectionnés de la liste