2016-10-17 81 views
0

非常快速的点。我在这里看到了非常类似的问题,但他们通常使用表ID或假定只有一个表。我有一个使用相同模板(没有唯一ID)的许多表的页面,并想知道是否加载特定数据时,如果行是空的。我曾尝试:JQuery获得行数

jQuery: count number of rows in a table

Jquery- Get the value of first td in table和许多其他

//var row = $(this).closest('table tbody:tr:first'); 
       // var row = $(this).closest('tr').children('td:first').text(); 
       // var row = $(this).closest('tr').length; 
       // var row = $(this).closest('tr').children('td:first').length; 
       // var row = $(this).closest('table').find("tbody").children().length; 
       // var row = $(this).closest('table').children('tr:last').index() + 1; 
       // var row = $(this).closest('table').rowIndex; 
       // var row = $("tbody").has("tr"); 
       // var row = $(this).closest('tbody').has("tr"); 
       var row = $('#tbody').children('tr:first').length; 

,但不能得到正确的答案。

下面是表的结构:

enter image description here

+0

这是指什么元素? –

+0

要计算你可以使用$()的元素长度 –

+0

看起来你应该看看[jQuery学习中心](https://learn.jquery.com/) – Andreas

回答

1

要获取的行数,使用lengthsize()

//$(this) assumed as element inside table. 
$(this).closest('table').find('tr').length 

至于你提到你在一个页面已经许多表。你需要让jQuery从你想得到tr长度的地方识别表索引。

要得到具体表,使用eq()

//To get TR length in 2nd table of a page 
$('table:eq(1) tr').length 

仅供参考,

  • 对于类选择,使用$('.table:eq(1) tr').length
  • 使用$(document).ready(function(){}来包装你的代码,当您的网页获得,将工作准备。在你的表结构, 可以使用

    $(".dataTable tr").length 
    

    获得的行数表

+0

这个答案非常接近我在找的东西。但是,由于它的一个大项目可能会添加新表,并且随着表号被硬编码,代码会中断。 –

+0

@AshshinGhazi我刚刚给你提供了一种方式,因为你的问题并没有那么清楚,但是你可以根据你的需要特别使用,当你想要获得特定表的长度时,你可能需要使用'eq()' –

+0

是的,我很欣赏它,但不是很好的做法。 –

0

寻找

$("table").each(function(){ 
console.log($(this).find("tr").length)); 
}) 

这将记录TRS的计数的所有表格中,你有在你的页面

如果你想运行一些代码时,数据加载到任何表中,你必须使用突变观察员

MutationObserver = window.MutationObserver || window.WebKitMutationObserver; 

//create observer 
var observer = new MutationObserver(function(mutations, observer) { 

    console.log("Table Loaded"); 
    //whatever you want to do when table is loaded 
}); 

//set to observe childs (options) 
observer.observe(document.querySelector("table"), { 
    subtree: true, 
    childList:true, 
    attributes:true 
}); 
0

我通过人的建议,其中大多是假设(像其他网页)去,有一个ID,并且有一个表页面上虽然提到的问题并不是这样。

结束使用:var row = table_values.context.tBodies [“0”]。firstElementChild;

我通过通过开发工具检查TBODY得到这个。