2011-06-29 27 views
0

我試圖從包含子表的<tr>元素中選擇<tr>元素從而僅從表中檢索<tr>元素而不是子表,因此爲什麼我不能使用find()方法。另一個挑戰是表格可能有或沒有<tbody>因此我不能使用children()jquery:需要幫助使用選擇器作爲方法

的HTML代碼

<table id='table1' class='toptable'> 
    <tbody> 
     <tr><td> 
      <table class='subtable'> 
       <tr></tr> 
      </table> 
      </td></tr> 
    </tbody> 
</table> 
<table id='table2' class='toptable'> 
     <tr><td> 
      <table class='subtable'> 
       <tr></tr> 
      </table> 
     </td></tr> 
</table> 

溶液到目前爲止

我發現了一種方法以選擇從表<tr>元件(它們是否有tbody與否)而不選擇<tr>使用子選擇器>的子表中的元素。

$('#table1 > tbody > tr).length // -> 1 
$('#table2 > tbody > tr).length // -> 1 

問題

我如何轉換上述選擇到一個單一的方法,我將能夠適用於表對象,讓我通過table.toptable收集itterate和重複使用同樣的方法與兩個表? (見下文)

$('.toptable').each(function(){ 
    $(this).({trs-from-table}).each(...); 
}); 

的jsfiddle

Here is the link

回答

2

這應該只是工作:

$('.toptable > tbody > tr').... 

即使你不添加一個明確的<tbody>瀏覽器應該自動爲你插入一個。

http://jsfiddle.net/alnitak/reDux/1/

或者,如果你想要一個特定的表元素$el上工作:

$el.children('tbody').children('tr'); 

例如爲:

$('.toptable').each(function() { 
    $(this).children('tbody').children('tr')... 
}); 
0

您需要:

$('tr:has(table)') 

這會給你一組包含<tr>元素,其中包含<table>