Question

Comment puis-je compte le nombre d'éléments tr dans une table en utilisant jQuery?

Je sais qu'il ya une question similaire , mais je veux juste les lignes au total.

Était-ce utile?

La solution

Utilisez un sélecteur qui permet de sélectionner toutes les rangées et prendre la longueur.

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

Note: cette approche compte aussi tous très de chaque tableau imbriqué

Autres conseils

Si vous utilisez <tbody> ou <tfoot> dans votre tableau, vous devez utiliser la syntaxe que vous ou après obtiendrez une valeur incorrecte:

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

Vous pouvez également ...

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

jsFiddle DEMO

Cela permettra d'assurer que toutes les tables rangées imbriquées ne sont pas aussi comptés.

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 fonctionne jQuery moins.

Voici mon avis sur la question:

//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();

Je suis le suivant:

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

Je avais besoin d'une façon de le faire dans un retour AJAX, donc je l'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>

Il est évident que ceci est un exemple rapide, mais il peut être utile.

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

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

essayez celui-ci s'il y a tbody

Sans tête

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

En cas de tête puis

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

Profitez !!!

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

var trLength = jQuery('#tablebodyID >tr').length;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top