2011-01-18 63 views
7

我有以下的HTML结构,我想找出立即<td>s的长度。这里是代码,我现在用: -寻找计数​​jquery

<table class="PrintTable"> 
    <tr> 
     **<td>** 
     <table> 
      <thead> 
       <tr><th>Type Of Transaction</th></tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>Name</td> 
       </tr> 
       <tr> 
        <td>Age</td> 
       </tr> 
      </tbody> 
     </table> 
     </td> 
     **<td>** 
     <table> 
      <thead> 
       <tr><th>2006</th></tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>Andi</td> 
       </tr> 
       <tr> 
        <td>25</td> 
       </tr> 
      </tbody> 
     </table> 
     </td> 

    </tr> 
</table> 

,我使用找出TD的长度的函数是

function getBody(element) 
{ 
    var divider=2; 
    var originalTable=element.clone(); 
    var tds = $(originalTable).children('tr').children('td').length; 
    alert(tds); 


} 

我看到结果为0毫无头绪可言。我期待2.任何帮助将不胜感激。

+0

为什么使用`.clone()`? `元素`意味着是一个jQuery对象?我假设如此,因为`克隆`不是DOM对象上的本地JS方法。你能举一个例子说明你如何调用`getBody`? – 2011-01-18 21:00:48

+0

是的,element是一个JQuery对象,它包含作为对象的完整表。即使你不调用clone(),它仍然显示0,因为我期待2。 – Nrusingha 2011-01-18 21:05:19

回答

19

我从您的HTML中删除了星号,并对您如何调用getBody做了一些假设,所以如果我做了任何不正确的事情,请告诉我。

代码:http://jsfiddle.net/27ygP/

function getBody(element) { 
    var divider = 2; 
    var originalTable = element.clone(); 
    var tds = $(originalTable).children('tbody').children('tr').children('td').length; 
    alert(tds); 
} 

getBody($('table.PrintTable')); 

最大的变化是增加.children('tbody')。 HTML解释器将tr包装在tbody中。向下进入那个,你会没事的。

2

我想你想使用以下。

$("td").length 

UPDATE

你将要使用tr标签作为起始选择,然后用先取只是第一个计数每个TD选择。

$("tr", $("td:first")).length 
+0

是的,但不是嵌套的,但只适用于**​​**。 – Nrusingha 2011-01-18 20:59:01

1

这应该工作:

var itemsCount = $(".PrintTable > tr > td").length; 

更新:

我刚刚意识到至少铬插入<tbody>如果它不存在,因此要获得跨浏览器支持:

var itemsCount = $(".PrintTable > tbody > tr > td, .PrintTable > tr > td").length; 

例如:http://jsfiddle.net/H2JWS/

+0

否。结果为0。 – Nrusingha 2011-01-18 21:02:31

3

试试这个:

//For FFox 
$(document).ready(function(){ 
var countTD=$("Your_Table_ID_or_Class tr:first > td").length; 
}); 

// For webKit Browser 
$(window).load(function(){ 
var countTD=$("Your_Table_ID_or_Class tr:first > td").length; 
}); 

注意;如果你创建动态表行的列然后使用 $(document).live("click",function(){});

1

在一般情况下,如果要计算一个特定行的td的数量,你可以做到这一点..

$(function(){ 
    count = $("table tr").children("td").index()+1; 
}); 
1

VAR rowCount时= $('#myTable tr')。length;

0
var originalTable = $(remove_copy_drargelement).closest('table').clone(); 

var tds = $(originalTable).children('tbody').children('tr').children('td').length;