Нахождение отсчета <td>Jquery - PullRequest
7 голосов
/ 18 января 2011

У меня есть следующая HTML-структура, и я хотел узнать длину немедленного <td>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. Любая помощь будет оценена.

Ответы [ 7 ]

19 голосов
/ 19 января 2011

Я удалил звездочки из вашего 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 s в tbody.Пройдите вниз, и все будет в порядке.

4 голосов
/ 18 января 2011

Я думаю, вы хотите использовать следующее.

$("td").length

ОБНОВЛЕНИЕ

Вы захотите использовать тег tr в качестве стартового селектора, а затем сосчитать каждый селектор td, используя first, чтобы получить только первый.

$("tr", $("td:first")).length
3 голосов
/ 05 ноября 2011

Попробуйте это:

//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 голос
/ 05 марта 2015

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

1 голос
/ 07 ноября 2011

В общем, если вы хотите посчитать количество td в определенной строке, вы можете сделать это ..

$(function(){
  count = $("table tr").children("td").index()+1; 
});
1 голос
/ 18 января 2011

Это должно работать:

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

Обновление:

Я только что понял, что по крайней мере Chrome вставляет <tbody>, если его еще нет, поэтому для получения поддержки кросс-браузера:

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

Пример: http://jsfiddle.net/H2JWS/

0 голосов
/ 21 апреля 2016
var originalTable = $(remove_copy_drargelement).closest('table').clone();

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