Question jQuery: compte le nombre de lignes dans une table


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

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


434
2017-07-19 14:02


origine


Réponses:


Utilisez un sélecteur qui va sélectionner toutes les lignes et prendre la longueur.

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

Note: cette approche compte aussi très très de toutes les tables imbriquées!


841
2017-07-19 14:05



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

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

152
2018-02-18 22:21



Alternativement ...

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

jsfiddle DEMO

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


43
2017-10-21 16:20



Eh bien, je reçois les lignes attr de la table et obtenir la longueur de cette collection:

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

Je pense que jQuery fonctionne moins.


30
2018-04-05 03:32



Voici mon point de vue:

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

USAGE:

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

14
2018-03-12 04:58



J'ai eu ce qui suit:

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

10
2018-05-31 15:36



J'avais besoin d'un moyen de le faire dans un retour AJAX, alors j'ai écrit cette pièce:

<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, c'est un exemple rapide, mais cela peut être utile.


5
2018-05-09 14:30



J'ai trouvé que cela fonctionne très bien si vous voulez compter les lignes sans compter les th et les lignes des tables à l'intérieur des tables:

var rowCount = $("#tableData > tbody").children().length;

4
2017-09-09 11:14



essayez celui-ci s'il y a tbody

Sans en-tête

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

S'il y a un en-tête alors

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

Prendre plaisir!!!


4
2017-07-14 13:34



row_count =  $('#my_table').find('tr').length;
column_count =  $('#my_table').find('td').length / row_count;

1
2018-03-10 04:47



jQuery("#tablebodyID >tr).length();

0
2017-09-03 03:24