【问题标题】:Finding the count of <td> Jquery查找 <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。

标签: jquery html html-table


【解决方案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() 中使用多个选择器
            猜你喜欢
            • 1970-01-01
            • 2012-12-22
            • 1970-01-01
            • 2017-09-25
            • 1970-01-01
            • 1970-01-01
            • 2019-08-15
            • 2021-07-13
            • 1970-01-01
            相关资源
            最近更新 更多