查找 <td> Jquery 的计数

Posted

技术标签:

【中文标题】查找 <td> Jquery 的计数【英文标题】:Finding the count of <td> Jquery 【发布时间】:2011-06-11 08:43:54 【问题描述】:

我有以下 html 结构,我想找出立即 &lt;td&gt;s 的长度。这是我正在使用的代码:-

<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。任何帮助将不胜感激。

【问题讨论】:

你为什么使用.clone()element 是 jQuery 对象吗?我假设是这样,因为clone 不是 DOM 对象上的本机 JS 方法。您能否提供一个如何调用getBody 的示例? 是的,元素是一个 JQuery 对象,它包含完整的表作为对象。即使你不调用 clone(),它仍然显示 0,正如我所期望的 2。 【参考方案1】:
var originalTable = $(remove_copy_drargelement).closest('table').clone();

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

一般来说,如果你想统计特定行中td的数量,你可以这样做..

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

【讨论】:

【参考方案4】:

试试这个:

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

【讨论】:

【参考方案5】:

我认为您想使用以下内容。

$("td").length

更新

您将希望使用 tr 标签作为开始选择器,然后使用 first 计算每个 td 选择器以仅采用第一个。

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

【讨论】:

是的,但不适用于嵌套的,而仅适用于 【参考方案6】:

这应该可行:

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

更新:

我刚刚意识到至少 Chrome 会插入 &lt;tbody&gt;(如果它尚不存在),以便获得跨浏览器支持:

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

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

【讨论】:

【参考方案7】:

我从您的 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 解释器将trs 包装在tbody 中。向下遍历,你会没事的。

【讨论】:

非常感谢。有用。有没有一个很好的调试器可以让我们找出所有这些技巧。 Firebug for Firefox 是市场上浏览 DOM 的最佳工具。所有主要的浏览器都有内置的工具来做同样的事情(只需点击菜单)。它将带您到一个交互式树,您可以手动遍历它。 谢谢!我想知道为什么你不能在 .children() 中使用多个选择器

以上是关于查找 <td> Jquery 的计数的主要内容,如果未能解决你的问题,请参考以下文章

Jquery - 在复选框单击时按类查找最接近的前一个 <tr>。复选框位于 <td> 内

匹配所有索引值为偶数/奇数的元素,从 0 开始计数

表格行的jQuery条件选择器

JQuery 没有找到 td

jquery 节点查找(查同名 class 的下一个)

:eq(index)