如何通过jQuery函数只获取直接子元素

Jas*_* Li 81 jquery parent-child

我有这样的表结构:

<table1>
  <tbody>
    <tr>
      <td></td>
        ...
      <td>
        <table2>
          <tbody>
            <tr>
              <td></td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
   </tbody>
  </table>
Run Code Online (Sandbox Code Playgroud)

在JavaScript中,我有一个变量tbl与价值$(table1),然后我想获得的所有直接子元素(TR)<tbody>table1.我的代码是:

$('tr', tb1)
Run Code Online (Sandbox Code Playgroud)

显然它返回<tr>table1和table2中的所有元素.我想我可以过得去

$('tr', tb1).not(function(){return $(this).parent().parent()[0] != tb1;})
Run Code Online (Sandbox Code Playgroud)

或者这种逻辑.

我知道$('table1 > tbody > tr')可以得到直接的孩子tr.不幸的是我不能用这个.

有人对此有好感吗?

谢谢.

Jos*_*zel 166

你可以使用find():

tbl.find("> tbody > tr")

  • **DIRECT CHILDREN =一级儿童**,因此**http://api.jquery.com/children/**是正确的答案,而不是find() - 一个获得所有元素的后代(由选择器筛选) )... (32认同)
  • 您应该将您的评论作为单独的答案jave.web,因为您的答案是正确答案. (4认同)
  • 请注意,对于仅降低一级的直接孩子,您可以简单地使用'children([selector])'. (3认同)
  • 这是一个绝妙的主意。$('&gt; tbody &gt; tr', tb1) 也适用于我。谢谢你。 (2认同)
  • 这太棒了,我不知道你可以使用直接子选择器(`&gt;`)而不在它前面指定任何东西。谢谢你。 (2认同)

Chr*_*ris 22

正如@ jave.web在评论中提到的那样

要搜索元素的直接子元素.children().它只会搜索直接的孩子,而不是更深入地穿越.http://api.jquery.com/children/


Šim*_*das 5

这正是人们应该小心嵌套表的原因。我真的希望您将它们用于数据而不是页面布局。

另一个可能会毁了你一天的问题是在嵌套表上使用 CSS 选择器......你基本上有同样的问题 - 你无法选择外部表的 TR 元素而不选择内部表中的元素。(您不能使用子选择器,因为它没有在 IE6 中实现)

这应该有效:

$("#table1 > tbody > tr")
Run Code Online (Sandbox Code Playgroud)

但是,我建议您对 TBODY 元素进行硬编码,因为您不应依赖浏览器为您创建它。