2011-03-16 40 views
1

我將如何通過選擇具有下面的HTML跨度那些得到tr最頂層:jQuery的:選擇子元素的最後家長

<table> 
    <tr><!-- THIS ONE --> 
     <td> 
      <table> 
       <tr> 
        <td><span></span></td> 
       </tr> 
      </table> 
     </td> 
     <td><span></span></td> 
    </tr> 
    <tr><!-- AND THIS ONE --> 
     <td><span></span></td> 
     <td><span></span></td> 
    </tr> 
</table> 

因此,像:

$('table span').parent('tr:last') 

雖然,不幸的是,只返回一個單一的...

+1

您開放TR的需要沒有即斜槓不是 – P4ul 2011-03-16 01:45:13

+0

你需要解釋你想要做的更清楚一點,你示例中的所有'tr's都包含一個跨度。也許用*表示你試圖得到哪些 – meouw 2011-03-16 01:46:54

+0

對不起,請輸入複製粘貼。已添加評論以顯示我想要什麼'tr'。 – ajbeaven 2011-03-16 02:03:35

回答

4

使用:has selector eg。 table#topmost > tr:has(span)

+1

我可能做了錯誤的事情,但它[並沒有爲我工作](http://jsfiddle.net/alexdickson/zfazq/)。我認爲這是因爲我的瀏覽器正在添加'tbody'元素,在這種情況下[this works](http://jsfiddle.net/alexdickson/zfazq/1/)。 – alex 2011-03-16 01:55:03

+0

感謝Vprimachenko爲您的答案和亞歷克斯的評論 – ajbeaven 2011-03-16 02:17:22

0

您的HTML是無效的開始。你從來沒有真正打開<tr>標籤,你只是試圖關閉它們(</tr>)。

0

大概:

$('table span').parentsUntil('tr'); 

但是,這不會起作用,因爲這樣,你有這個格式化的TR是兄弟,不是父母

因此,在這種情況下...您的HTML改變 -

<table> 
    <tr> 
     <td> 
      <table> 
       <tr> 
        <td><span></span></td> 
       </tr> 
      </table> 
     </td> 
     <td><span></span></td> 
    </tr> 
    <tr> 
     <td><span></span></td> 
     <td><span></span></td> 
    </tr> 
</table> 

和上面的JavaScript將工作。

0
$(document).ready(function() { 
     $('table span').each(function(){ 
      //do something with each tr you find 
      $(this).parents('tr:last'); 
     }); 
    }); 
0

這在我看來,最頂層始終處於最上面的表,所以你只需要檢查這些行

$('#topmost-table>tr:has(span)').stuff(); 

<table id="topmost-table"> 
    <tr> 
     <td> 
      <table> 
       <tr> 
        <td><span></span></td> 
       </tr> 
      </table> 
     </td> 
     <td><span></span></td> 
    </tr> 
    <tr> 
     <td><span></span></td> 
     <td><span></span></td> 
    </tr> 
</table> 
相關問題