2011-07-25 44 views
0

如何选择tbody的儿童而不是他们的后代?例如,使用下面的jQuery声明:选择儿童元素而不是后代

alert($('.someClass tbody tr').length); 

将使用下面的示例HTML产生长度2:

<div> 
    <table class='someClass'> 
    <tbody> 
     <tr> 
     <td> 
      <span>cell 1-1</span> 
      <table> 
       <tbody> 
       <tr class='level-2'> 
        <td> 
        <span>cell 1-2</span> 
        <table> 
         <tbody> 
         <tr class='level-3'> 
          <td><span>cell 1-3</span></td> 
         </tr> 
         </tbody> 
        </table> 
        </td> 
       </tr> 
       </tbody> 
      </table> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <span>cell 2-1</span> 
      <table> 
       <tbody> 
       <tr class='level-2'> 
        <td> 
        <span>cell 2-2</span> 
         <table> 
         <tbody> 
          <tr class='level-3'> 
          <td><span>cell 2-3</span></td> 
          </tr> 
         </tbody> 
         </table> 
        </td> 
        </tr> 
       </tbody> 
       </table> 
      </td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
+7

请注意,您的表格标记需要更新。你不能在tr标签中嵌套tr标签。 –

+0

标记更新。 – stavarotti

+0

您的HTML不合法。在之前你需要一个'

'。 –

回答

5

你可以这样说:

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

这实际上是一个css2选择器,jQuery很好地实现了它。

+0

以上声明仍然会选择产生6个计数的儿童子女。 – stavarotti

+2

它不是CSS 3选择器。它实际上是指定自CSS 2. – jwueller

+0

嗯......它不应该,但试试这个警报($('.someClass> tbody> tr').length); ' – Emmanuel

0

除了Element > Child选择,也有个children方法:

var element = $("#element"); 
var children = element.children("tr"); 
0

你可能只是无法使用jquery并且有element.children.length甚至element.childElementCount