2010-09-10 61 views
59

我有一個表的結構是這樣的:如何獲得通過jQuery函數只有直接子元素

<table1> 
    <tbody> 
    <tr> 
     <td></td> 
     ... 
     <td> 
     <table2> 
      <tbody> 
      <tr> 
       <td></td> 
      </tr> 
      </tbody> 
     </table> 
     </td> 
    </tr> 
    </tbody> 
    </table> 

在JavaScript中,我有一個變量tbl$(table1)值,然後我想獲得的所有直接子元素(tr)<tbody>table1。 我的代碼是:

$('tr', tb1) 

顯然,它返回所有<tr>元素Table 1和表2。 我想我可以通過

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

或這種邏輯。

我知道$('table1 > tbody > tr')可以直接找到孩子tr。不幸的是我不能使用這個。

任何人都有這個好主意?

謝謝。

回答

136

您可以使用find()

tbl.find("> tbody > tr")

+1

這是一個勇敢的想法。 $('> tbody> tr',tb1)也適用於我。謝謝。 – 2010-09-10 19:40:58

+0

這真是太好了,我不知道你可以使用直接子選擇器('>')而不需要在它前面指定任何東西。謝謝。 – silkfire 2013-10-24 07:39:03

+2

請注意,對於只有一個級別的直接孩子,您可以簡單地使用'children([selector])'。 – orad 2013-10-31 18:57:53

4

這就是爲什麼我們應該小心與嵌套表的原因。我真的希望你使用他們的數據而不是頁面佈局。

另一個可能會毀掉你的一天的問題是在嵌套表上使用CSS選擇器......你基本上有同樣的問題 - 你不能選擇外部表的TR元素,也不選擇內部表中的那些TR元素。 (您不能使用子選擇器,因爲它不是在IE6中實現)

這應該工作:

$("#table1 > tbody > tr") 

不過,我建議你硬編碼TBODY元素,因爲你不應該依賴於瀏覽器爲你創造它。

10

正如評論

提到要通過搜索元素的直接孩子使用.children() @ jave.web。它只會搜索直接的孩子,而不是更深入地遍歷。 http://api.jquery.com/children/