2016-12-08 3 views
3

Я не могу понять поведение метода jquerychildren. Я могу подсчитать количество <p> в <div> с помощью:Как получить число детей в таблице html с помощью jquery

var abc = $("div").children("p"); 
    alert(abc.length); 

Но то же самое применительно к <tr> в <table> результатов в 0 (ноль) кол.

var abc = $("table").children("tr"); 
    alert(abc.length); 

Почему это так?

+2

Вы забыли ''. Используйте '$ ('table> tbody'). Children ('tr'). Length;' – Tushar

+0

Где ваш HTML? – PHPglue

+0

спасибо @Tushar, ваше решение сработало. Но я хочу знать, почему это так. Я не включил tbody в свой элемент таблицы. то почему я должен использовать это для получения детей? – JPG

ответ

2

Попробуйте

$("table tr").length; 

Если вы хотите, чтобы получить tr в tbody

$("table tbody tr").length; 
+0

OP хотят только прямые дети. Либо используйте 'children()' или '>' selector. – Tushar

0

Используйте селектор, который выберет все строки и займет длину.

var tableRowCount = $('table tr').length; 

Этот подход также используется для подсчета ПОЛУЧИТЬ все ТРС каждого вложенной таблицы

1

children() будет возвращать прямые детей (траверсы один уровень) из <table>, но не гранд-ребенок (т.е. children «s children) ,

Если вы хотите искать в потомках элемента, используйте find().

Вот как тогда вы можете получить <tr> из <table>:

var trs = $('table').find('tr'); 

И, чтобы получить количество/длина

alert($('table').find('tr').length); 


Нет вложенной таблицы
Если есть нет вложенных таблиц, затем

alert($('table').find('tr').length); 

или

alert($('table tr').length); 

даст вам правильный результат.


Вложенные таблицы
Если у вас возникли некоторые вложенные таблицы, т.е. <table> внутри <table>,

Приведенный выше код не даст вам правильный результат, если вам нужно <tr> х родителей <table>, но не детей <table>.

Вот как тогда вы можете получить:

alert($('table>tbody>tr').length); 

или

alert($('table').children('tbody').children('tr').length); 

Надеется, что это помогает.

Смежные вопросы