web-dev-qa-db-fra.com

jQuery: compte le nombre de lignes dans une table

Comment compter le nombre d'éléments tr dans une table avec jQuery?

Je sais qu'il y a un question similaire , mais je veux juste le nombre total de lignes.

467
danjan

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

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

Remarque: cette approche compte également très toutes les tables imbriquées!

905
tvanfosson

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

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

Alternativement ...

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

jsFiddle DEMO

Cela garantira que toutes les lignes de table imbriquées ne sont pas également comptées.

48
DevlshOne

Eh bien, je récupère les lignes attr de la table et la longueur de cette collection:

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

Je pense que jQuery fonctionne moins.

32
jjroman

Voici mon point de vue sur elle:

//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;
};

SAGE:

var rowCount = $('#productTypesTable').rowCount();
16
Ricky G

J'ai eu ce qui suit:

jQuery('#tableId').find('tr').index();
12
chifliiiii

J'avais besoin d'un moyen de faire cela dans un AJAX retour, alors j'ai écrit ce morceau:

<p id="num_results">Number of results: <span></span></p>

<div id="results"></div>

<script type="text/javascript">
$(function(){
    ajax();
})

//Function that makes Ajax call out to receive search results
var ajax = function() {
    //Setup Ajax
    $.ajax({
        url: '/path/to/url', //URL to load
        type: 'GET', //Type of Ajax call
        dataType: 'html', //Type of data to be expected on return
        success: function(data) { //Function that manipulates the returned AJAX'ed data
            $('#results').html(data); //Load the data into a HTML holder
            var $el = $('#results'); //jQuery Object that is holding the results
            setTimeout(function(){ //Custom callback function to count the number of results
                callBack($el);
            });
        }
    });
}

//Custom Callback function to return the number of results
var callBack = function(el) {
    var length = $('tr', $(el)).not('tr:first').length; //Count all TR DOM elements, except the first row (which contains the header information)
    $('#num_results span').text(length); //Write the counted results to the DOM
}
</script>

Évidemment, ceci est un exemple rapide, mais cela peut être utile.

7
dennismonsewicz

essayez celui-là s'il y a tbody

Sans en-tête

$("#myTable > tbody").children.length

S'il y a en-tête alors

$("#myTable > tbody").children.length -1

Enjoy !!!

6
BornToCode

J'ai trouvé que cela fonctionnait vraiment bien si vous voulez compter les lignes sans compter le th et toutes les lignes des tables à l'intérieur des tables:

var rowCount = $("#tableData > tbody").children().length;
6
Zoe
row_count =  $('#my_table').find('tr').length;
column_count =  $('#my_table').find('td').length / row_count;
3
Cybernetic
jQuery("#tablebodyID >tr).length();
1
sivaprakash