2011-03-15 2 views
1

Disons que j'ai une table avec ces lignes:jQuery supprimer plage de lignes

<table> 
    <tr id="before_dynamic_rows"></tr> 
    <tr id="after_dynamic_rows"></tr> 
</table> 

En utilisant jQuery, insérer des lignes générées automatiquement (résultats de recherche) avant la ligne de after_dynamic_rows. Comment puis-je supprimer une plage de lignes, à savoir - vous le devinez - celles entre la ligne avec l'identifiant before_dynamic_rows et la ligne after_dynamic_rows? (Afin de pouvoir, après les avoir inséré, pour les enlever et insérer différents autres.)

var response = ajax.responseText; 
$('#after_dynamic_rows').before(response); 

Voilà comment insérer les nouvelles lignes. Considérant la première réponse: comment puis-je attribuer une classe à quel que soit le texte de la réponse?

+0

en double de http://stackoverflow.com/questions/1059625/using-jquery-how-do-i-select -a-range-of-rows – mplungjan

+0

Quelle est la réponse que vous ajoutez? Je suppose que votre réponse est html généré sur le serveur? Si c'est le cas, vous devez modifier le code du serveur qui génère le code HTML que vous ajoutez et ajouter les informations de classe avant de le renvoyer au client. – NerdFury

Répondre

2

Cette réponse est basée sur une interprétation littérale de la question avec l'idée que les seules lignes qui doivent être supprimés sont les lignes qui sont entre l'élément #before_dynamic_rows et #after_dynamic_rows.

Voir version de travail à: http://jsfiddle.net/7wBzd/

var $rows = $("tr"); 
$("tr:lt("+ $rows.index($("#after_dynamic_rows")) +"):gt("+ $rows.index($("#before_dynamic_rows")) +")").remove(); 
+0

ne fonctionne pas :( – arik

+0

http://jsfiddle.net/7wBzd/ – jessegavin

+0

Parfait! Merci – arik

2

Je voudrais attribuer une classe à ces lignes ajoutées pour les rendre faciles à sélectionner, mais vous pouvez sélectionner tous les enfants TR et utiliser la méthode 'non' pour supprimer les deux que vous souhaitez conserver.

$("table tr").not("#before_dynamic_rows").not("#after_dynamic_rows").remove(); 
+0

Comme édité ci-dessus - comment puis-je attribuer une classe à ceux-ci? – arik

2
$("table tr:gt(0)").not("#after_dynamic_rows").remove(); 

Try it out here.

Remarque si #after_dynamic_rows est la dernière ligne, alors vous pouvez juste faire:

$("table tr:gt(0)").not(":last").remove(); 

ou:

$("table tr:gt(0):not(:last)").remove(); 

... et s'il y a des lignes avant #before_dynamic_rows, il suffit de faire:

$("table tr:not(#before_dynamic_rows, #after_dynamic_rows)").remove(); 
+0

Le vôtre est significativement plus joli que le mien. Mais que se passe-t-il s'il y a des lignes avant '# before_dynamic_rows'? – jessegavin

+0

@jessegavin - bon point! Edité – karim79

+0

Urgh - il y a des possibilités infinies Je pense que je vais le laisser à ce que j'ai répondu maintenant! – karim79

Questions connexes