jQuery无法选择孩子

时间:2014-10-29 19:21:14

标签: javascript jquery angularjs jquery-selectors

所以我使用jQuery在角度后链接函数中选择一些元素。唯一的问题是,jQuery找不到任何孩子。

var tr = tbl.find('> thead > tr');

console.log('th', tr.children('th').length, tr.children().length, tr[0].children);

输出:

What I see in the console

是什么给出了?

修改

这是HTML本质上的

<table my-directive>
  <thead>
    <tr>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
      <th sorting-header="foo">foo</th>
    </tr>
  </thead>
  ...
</table>

编辑2

我想我遇到了某种类型的竞争条件。就像我说我没有写原始指令,我只是调整它。似乎当我交给tbl元素时,表中还没有元素(所以我想),因为tr[0].innerHTML吐出了一堆<!-- ngIf:条款但是没有元素。我猜这是一些怪异的竞争条件。

感谢所有人的帮助,我现在想以不同的方式解决这个问题。

3 个答案:

答案 0 :(得分:0)

使用此代码访问:

var rows= $('#element_ID > tbody > tr').length
var columns=$('#element_ID').find('tr')[0].cells.length;
var text =  $($('#element_ID').find('tbody > tr')[rows-1]).children('td')[counter].innerHTML;

答案 1 :(得分:0)

很抱歉打扰所有人,看起来这是一个典型的竞争条件。

我决定将其限制在console

console.log('th', tr.children('th').length, tr.children().length, tr[0].children.length)

现在我得到3个零。所以我想我在console看到的是由于控制台正在观看nodeList并实时更新其更改。

@Blazemonger钉了它。

答案 2 :(得分:0)

尝试使用var tr = tbl.children('thead > tr');