jquery – obtenir toutes les lignes sauf le premier et le dernier

Je veux append dynamicment une classe à toutes les lignes d’une table à l’exception de la première et de la dernière ligne. Comment pourrais-je faire cela sans assigner une classe CSS aux lignes pour les identifier. Je reçois tout sauf la première ligne actuellement avec

$("#id").find("tr:gt(0)") 

J’ai besoin de combiner cela avec not("tr:last") manière ou d’une autre?

Déposez le gt() , car je suppose que c’est un peu plus lent que :first .

Utilisez not() avec :first et :last :

 $('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight'); 

La plupart des navigateurs ajoutent automatiquement un élément tbody dans le balisage de la table s’il en manque, c’est pourquoi le sélecteur d’enfants immédiats échouait – il n’y avait pas d’éléments

tant qu’enfants immédiats dans la

.

Je ne suis pas sûr à 100% que tous les navigateurs le font, il serait donc plus sûr de simplement append manuellement le

. Sinon, vous avez besoin d’un petit reniflement et vous ne pouvez pas le faire en une seule fois:

 if($('table#tbl > tbody').size() > 0) { $('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight'); } else { $('table#tbl > tr').not(':first').not(':last').addClass('highlight'); } 

J’espère que ceci résoudra votre problème!

Essaye ça:

 .not(':first').not(':last') 

pourquoi pas juste ça?

 $('table tr:not(:first-child):not(:last-child)'); 

fonctionne aussi bien comme sélecteur CSS.

Vous pouvez combiner les méthodes .not() en une seule en séparant les sélecteurs par des virgules:

 $('#id tr').not(':first, :last'); $('#id tr:not(:first, :last'); 

Notez que le second n’est pas valide en CSS pur, uniquement en tant que sélecteur jQuery. Pour les CSS purs, vous devez utiliser la réponse de @ Sumit.

Étranges les suggestions affichées ne fonctionnaient pas, elles devraient toutes fonctionner! MAIS…

Si cela ne fonctionnait pas, faites-le de cette façon… légèrement plus lent mais DOIT TRAVAILLER !! ESSAYER:

 $('table#tbl tr').addClass('highlight'); $('table#tbl tr:first-child').removeClass('highlight'); $('table#tbl tr:last-child').removeClass('highlight'); 

Vous pouvez également utiliser la méthode .slice() pour supprimer les premiers / derniers éléments de l’ensemble:

 $('table tr').slice(1, -1); 

La méthode .slice() crée essentiellement un nouvel object jQuery avec un sous-ensemble des éléments spécifiés dans l’ensemble initial. Dans ce cas, les éléments avec un index de 1 et -1 seront les premiers / derniers éléments.

Exemple:

 $('table tr').slice(1, -1).css('background-color', '#f00'); 
 table { width: 100%; } 
  
1
2
3
4
5
6