jQuery: bir tablodaki satır sayısını say


491

JQuery kullanarak bir tablodaki tr öğelerinin sayısını nasıl sayabilirim?

Benzer bir soru olduğunu biliyorum , ama sadece toplam satırları istiyorum.

Yanıtlar:


955

Tüm satırları seçecek ve uzunluğu alacak bir seçici kullanın.

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

Not: Bu yaklaşım aynı zamanda iç içe geçmiş her tablonun tüm değerlerini sayar!


11
$ ('# myTable tr'). size () aynı değeri döndürür.
Garry Shutler

31
@Garry - dokümanlar daha hızlı olduğu için uzunluğun boyuta () göre tercih edildiğini belirtir.
tvanfosson

12
.size () .length dahili olarak çağırır
redsquare

2
Bir dizi olduğu için length özelliğine sahiptir. JQuery nesnesi her zaman bir dizi genişletilmiş olup olmadığını bilmek için jQuery geçmişinin yeterli bilmiyorum.
tvanfosson

67
Bu aynı zamanda tr ... $ ('# myTable tbody tr'). Uzunluğu; bunları sadece masa gövdelerinde sayacak ..
Dave Lawrence

178

Eğer kullanıyorsanız <tbody>veya <tfoot>Tablonuzdaki, aşağıdaki sözdizimini kullanın gerekecek veya bir yanlış değer elde edersiniz:

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

1
<tbody> kullanıyorum ama aynı değeri
alıyorum

1
$ ('# myTable> tbody: last> tr') kullanın. uzunluk;
Riccardo Bassilichi

7
@DevlshOne Bu doğru değil, uzunluk sıfır taban değil, belgeleri kontrol edin: api.jquery.com/length
Mike

1
İç içe tablolarınız olduğunda, bu yalnızca belirtilen tablodaki satırları sayar, bu da ihtiyacım olan şeydir.
GilShalit

1
@ user12379095 Buna benzer bir şey: stackoverflow.com/questions/32101764/…
AntonChanning

49

Alternatif ...

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

jsFiddle DEMO

Bu, iç içe geçmiş tablo satırlarının da sayılmamasını sağlar.


Oh, çünkü o zaman dizin -1 ile döner. Zeki.
Samuel Edwin Ward

1
Teşekkürler. Bunlar az ve çok arasındadır, ancak akıllı çözümler şimdi tekrar tekrar kaymaktadır.
DevlshOne

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

<thead>Satırları ve iç içe geçmiş tablo satırlarını yoksayar . Güzel. jsfiddle.net/6v67a/1576
GreeKatrina

Son'da <td>iç tablo varsa, o tablonun satır sayısını döndürür !! jsfiddle.net/6v67a/1678
Shaunak Shukla

32

Attr satırlarını tablodan alıp bu koleksiyonun uzunluğunu alıyorum:

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

Bence jQuery daha az çalışıyor.


2
+1 - Tablo içeren bir öğeyi geçirdiğiniz senaryo için iyi örn. Var rowCount = $ (element) .attr ('rows'). Length;
Nicholas Murray

9
JQuery v1.9.0 ve ben 'satırlar' erişmek için prop () kullanmanız gerekir: $ ("# myTable"). Prop ('satırlar'). Length; (Chromium 24)
nvcnvn

16

İşte benim almam:

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

KULLANIM:

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

Çok güzel bir fonksiyon @Ricky G, birkaç şey yapmak için yararlı örnek bu fonksiyon dom yerine backend oluşturulan html için çağrılabilir .. Teşekkürler
Dhaval dave

12

Aşağıdaki var:

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

3
artı 1 satır sayısını elde etmek için
Olivier

8

eğer bir kişi varsa bunu dene

Üstbilgisiz

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

Üstbilgi varsa

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

Zevk almak!!!


1
Chidlren => $ ("# myTable> tbody") sonra eksik (). Children (). Length
DrB

1
Başlık, daha <thead>önce gelmesi gereken kapalı olmalıdır <tbody>. Bu nedenle, tablo standarda uygun şekilde tasarlanmışsa, -1'e gerek yoktur.
ilpelle

sorun, datatable hiçbir kayıt olmadığında uzunluğu 1 olarak gösterir, çünkü datatable datatable sınıf "garip" ile boş bir satır render .....
Syed Ali

Bir UserScript üzerinde dinamik bir tablo var ve bu işe
yarayan

7

Ben AJAX dönüş bunu yapmak için bir yol gerekiyordu, bu yüzden bu parçayı yazdım:

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

Açıkçası bu hızlı bir örnektir, ancak yardımcı olabilir.


6

Ben th ve herhangi bir satır tablo içindeki tablolardan saymadan satırları saymak istiyorsanız bu gerçekten iyi buldum:

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

Sütunları saymak için nasıl değiştirilir?
ePandit

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.