529 votes

jQuery - compter le nombre de lignes dans un tableau

Comment compter le nombre d'éléments tr dans un tableau en utilisant jquery. Désolé, je sens que c'est peut-être élémentaire mais je me cogne la tête contre le problème.

Je sais qu'il y a un fil similaire, mais je veux juste le nombre total de rangs. http://stackoverflow.com/questions/613024/count-number-of-table-rows-between-two-specific-rows-with-jquery

1029voto

tvanfosson Points 268301

Utilisez un sélecteur qui sélectionnera toutes les lignes et prendra la longueur.

var rowCount = $('#myTable tr').length;

Note : cette approche compte également tous les trs de chaque table imbriquée !

11 votes

$('#myTable tr').size() renverra la même valeur.

34 votes

@Garry -- Les documents indiquent que length est préféré à size() parce que c'est plus rapide.

14 votes

.size() appelle .length en interne

197voto

James Moberg Points 851

Si vous utilisez <tbody> ou <tfoot> dans votre tableau, vous devrez utiliser la syntaxe suivante ou vous obtiendrez une valeur incorrecte :

var rowCount = $('#myTable >tbody >tr').length;

1 votes

J'utilise <tbody> mais j'obtiens la même valeur

1 votes

Utiliser $('#myTable >tbody:last >tr').length ;

0 votes

N'oubliez pas non plus que si vous utilisez cette solution, vous n'obtiendrez pas réellement de COUNT puisque, par définition, l'attribut "length" est basé sur zéro.

50voto

DevlshOne Points 5189

Ou bien...

var rowCount = $('table#myTable tr:last').index() + 1;

jsFiddle DEMO

Cela permet de s'assurer que les rangées de tableau imbriquées ne sont pas également comptées.

0 votes

Oh, parce qu'alors l'index renvoie -1. Intelligent.

1 votes

Merci. Elles sont rares, mais des solutions intelligentes se glissent de temps en temps.

0 votes

var rowCount = $('table#myTable tr:last').index() + 1;

33voto

jjroman Points 349

Je récupère les lignes attr de la table et j'obtiens la longueur de cette collection :

$("#myTable").attr('rows').length;

Je pense que jQuery fonctionne moins bien.

2 votes

+1 - Bon pour le scénario où l'on vous passe un élément qui contient un tableau, par exemple var rowCount = $(element).attr('rows').length ;

11 votes

J'utilise JQuery v1.9.0 et je dois utiliser prop() pour accéder à 'rows' : $("#myTable").prop('rows').length ; (Chromium 24)

18voto

Ricky Points 1045

Voici ce que j'en pense :

//Helper function that gets a count of all the rows <TR> in a table body <TBODY>
$.fn.rowCount = function() {
    return $('tr', $(this).find('tbody')).length;
};

UTILISATION :

var rowCount = $('#productTypesTable').rowCount();

0 votes

Très belle fonction @Ricky G, utile pour faire plusieurs choses exemple cette fonction peut être appelée pour le html généré depuis le backend au lieu du dom aussi . Merci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X