How do I count the number of tr elements within a table using jQuery?
I know there is a similar question, but I just want the total rows.
How do I count the number of tr elements within a table using jQuery?
I know there is a similar question, but I just want the total rows.
Use a selector that will select all the rows and take the length.
var rowCount = $('#myTable tr').length;
Note: this approach also counts all trs of every nested table!
If you use <tbody> or <tfoot> in your table, you'll have to use the following syntax or you'll get a incorrect value:
var rowCount = $('#myTable >tbody >tr').length;
Alternatively...
var rowCount = $('table#myTable tr:last').index() + 1;
This will ensure that any nested table-rows are not also counted.
var rowCount = $('table#myTable tr:last').index() + 1;<thead> rows and nested table rows. Nice. jsfiddle.net/6v67a/1576<td> has inner table, it returns row count of that table!! jsfiddle.net/6v67a/1678Well, I get the attr rows from the table and get the length for that collection:
$("#myTable").attr('rows').length;
I think that jQuery works less.
Here's my take on it:
//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();
I got the following:
jQuery('#tableId').find('tr').index();
try this one if there is tbody
Without Header
$("#myTable > tbody").children.length
If there is header then
$("#myTable > tbody").children.length -1
Enjoy!!!
<thead> which should come before <tbody>. So the -1 should not be needed, if the table is properly designed according to the standard.I found this to work really well if you want to count rows without counting the th and any rows from tables inside of tables:
var rowCount = $("#tableData > tbody").children().length;
I needed a way to do this in an AJAX return, so I wrote this piece:
<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>
Obviously this is a quick example, but it may be helpful.
document.getElementById("myTable").rows.length;