jQuery: compter le nombre de lignes d'une table
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;
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;