我无法在JQuery中抓取一个DIV设置为隐藏的表中的TR计数。
以下是一个例子:
<div id="questions" style="display: none;">
<table id="tbl_questions">
<thead>
<tr>
<th>Question</th>
<th>Weight</th>
</tr>
</thead>
<tbody>
<tr id="q0">
<td id="td_question0">Some Question 0</td>
<td id="td_wieght0">Some Weight 0</td>
</tr>
<tr id="q1">
<td id="td_question1">Some Question 1</td>
<td id="td_wieght1">Some Weight 1</td>
</tr>
</tbody>
</table>
</div>
请注意,该表位于包含div中。它设置为display:none。当我尝试运行这个JQuery代码时,它返回0。
var question_count = $("#tbl_questions> tr").size();
alert(question_count);
有什么想法吗?
我试图找到计数,这样我就可以在表格中构建每个问题和权重的数组。由于ID为我提供了一个索引,这应该很简单,但事实上它隐藏在一个隐藏的DIV中会像上面的问题一样出现问题吗?
谢谢, Tegan Snyder
答案 0 :(得分:2)
你的选择器说,“所有tr元素都是'id'值为'tbl_questions'的元素的直接子元素”。没有这样的“tr”元素。
摆脱“&gt;”在选择器中,看看是否有帮助。当你只是在某个特定容器“低于”的地方寻找元素时,你不需要(或想要)“&gt;”,这意味着只能 一个级别(即,在直接的孩子们。)
答案 1 :(得分:2)
尝试:
var question_count = $("#tbl_questions tbody tr").size();
无论嵌套深度如何,都会选取从tbody
下降的#tbl_questions
后代的行。见http://api.jquery.com/descendant-selector/。
以下内容也应有效,因为tbody
是#tbl_questions
的直接子项,而包含您问题的tr
是直接子项tbody
元素:
var question_count = $("#tbl_questions > tbody > tr").size();