jQuery: Numără numărul de rânduri dintr-un tabel (Programare, Jquery, Numără, Rând)

danjan a intrebat.

Cum pot număra numărul de elemente tr dintr-un tabel folosind jQuery?

Știu că există o întrebare similară, dar vreau doar numărul total de rânduri.

11 răspunsuri
tvanfosson

Utilizați un selector care va selecta toate rândurile și va lua lungimea.

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

Notă: această abordare numără, de asemenea, toate trs din fiecare tabel imbricate!

Comentarii

  • $(‘#myTable tr’).size() va returna aceeași valoare. –  > Por Garry Shutler.
  • 34

  • @Garry — documentația indică faptul că length este preferată în locul lui size() deoarece este mai rapidă. –  > Por tvanfosson.
  • .size() apelează .length în mod intern –  > Por redsquare.
  • Are o proprietate length pentru că este o matrice. Nu cunosc suficient de bine istoria jQuery pentru a ști dacă obiectul jQuery a extins întotdeauna un array. –  > Por tvanfosson.
  • 70

  • Acest lucru va număra și tr în thead… $(‘#myTable tbody tr’).length; va număra doar cele din corpurile din tabel… –  > Por Dave Lawrence.
James Moberg

Dacă utilizați <tbody> sau <tfoot> în tabelul dvs., va trebui să utilizați următoarea sintaxă, altfel veți obține o valoare incorectă:

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

Comentarii

  • Eu folosesc <tbody> dar obțin aceeași valoare –  > Por Kreker.
  • folosiți $(‘#myTable >tbody:last >tr’).length; –  > Por Riccardo Bassilichi.
  • @DevlshOne Acest lucru nu este adevărat, lungimea nu este baza zero, verificați documentația: api.jquery.com/length –  > Por Miguel.
  • Când aveți tabele imbricate, acest lucru va număra numai rândurile din tabelul specificat, ceea ce este ceea ce aveam nevoie. –  > Por GilShalit.
  • @user12379095 Ceva de genul acesta: stackoverflow.com/questions/32101764/… –  > Por AntonChanning.
DevlshOne

Alternativ…

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

jsFiddle DEMO

Acest lucru va asigura că orice rânduri de tabel imbricate nu sunt de asemenea numărate.

Comentarii

  • Oh, pentru că atunci indexul returnează -1. Inteligent. –  > Por Samuel Edwin Ward.
  • Mulțumiri. Sunt puține și rare, dar din când în când se mai strecoară soluții inteligente. –  > Por DevlshOne.
  • var rowCount = $('table#myTable tr:last').index() + 1; –  > Por Ouadie.
  • Ignoră <thead> rândurile și rândurile de tabel imbricate. Frumos. jsfiddle.net/6v67a/1576 –  > Por Katrina.
  • Dacă ultima <td> are un tabel interior, se returnează numărul de rânduri din acel tabel!!! jsfiddle.net/6v67a/1678 –  > Por Shaunak Shukla.
jjroman

Ei bine, obțin rândurile attr din tabel și obțin lungimea pentru acea colecție:

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

Cred că jQuery funcționează mai puțin.

Comentarii

  • +1 – Bun pentru scenariul în care vi se trece elementul care conține un tabel de exemplu var rowCount = $(element).attr(‘rows’).length; – –  > Por Nicholas Murray.
  • Folosesc JQuery v1.9.0 și trebuie să folosesc prop() pentru a accesa ‘rows’: $(„#myTable”).prop(‘rows’).length; (Chromium 24) – –  > Por nvvnvn.
Ricky G

Iată ce părere am eu despre asta:

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

Comentarii

  • Foarte bună funcție @Ricky G, utilă pentru a face mai multe lucruri exemplu această funcție poate fi apelată pentru html generat din backend în loc de dom, de asemenea… Mulțumesc.  > Por Dhaval dave.
chifliiiii

Am obținut următoarele:

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

Comentarii

  • plus 1 pentru a obține numărul de rânduri –  > Por Oli.
BornToCode

încercați aceasta dacă există tbody

Fără antet

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

Dacă există un antet, atunci

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

Bucurați-vă!!!

Comentarii

  • Este lipsă () după chidlren => $(„#myTable > tbody”).children().length –  > Por DrB.
  • Antetul trebuie să fie inclus în <thead> care ar trebui să vină înainte de <tbody>. Deci, nu ar trebui să fie necesar -1, dacă tabelul este proiectat corespunzător conform standardului. –  > Por ilpelle.
  • problema este că, atunci când datatable nu are nici o înregistrare, se afișează lungimea ca fiind 1, deoarece datatable redă un rând gol cu clasa „odd” în datatable …… –  > Por Syed Ali.
  • Am un tabel dinamic pe un UserScript și aceasta a fost singura soluție care a funcționat.  > Por brasofilo.
dennismonsewicz

Aveam nevoie de o modalitate de a face acest lucru într-un retur AJAX, așa că am scris această piesă:

<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>

Evident, acesta este un exemplu rapid, dar poate fi de ajutor.

Zoe

Am constatat că acest lucru funcționează foarte bine dacă doriți să numărați rândurile fără a număra th și orice rânduri din tabelele din interiorul tabelelor:

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

Comentarii

  • Cum se poate modifica pentru a număra coloanele? –  > Por ePandit.
Cybernetic
row_count =  $('#my_table').find('tr').length;
column_count =  $('#my_table').find('td').length / row_count;

sivaprakash

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