2015-12-17 57 views
1

我在網頁中有一個複雜的表結構,如下所示。可能會有更深層的表格嵌套。獲取直接在某個類的tr下面的元素的父td

我想找到一個jQuery選擇器來查找給定輸入元素的最接近td,並添加約束條件,該td的tr應該有一個'class1'類。

問題:如何獲得我在jQuery幫助下描述的單個'td`?我嘗試了一些代碼,但沒有成功。

例如,如果給定的輸入元素是firstname那麼td立即這個元素周圍不會是一個我找的,但有評論說<!--this is the td I am trying to get-->的TD是正確的TD。

我試過下面的選擇器來得到這個td,但是當我期待只有一個時,它返回了6個td DOM元素。您可以在這個網址,查看該代碼:demo for this scenario

代碼我試過,但它不工作嵌套表

<table> 
    <tr class='class1'> 
     <td> 
     <!--some content here--> 
     </td> 
     <td><!--this is the td I am trying to get--> 
     <table> 
      <tr> 
       <td> 
        First Name 
       </td> 
       <td> 
        <input type='text' id='firstname'> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Last Name 
       </td> 
       <td> 
        <input type='text' id='lastname'> 
       </td> 
      </tr> 
     </table> 
     </td> 
    </tr> 
</table> 

回答

1

$('#firstName').parents("tr.class1").find("td"); 

HTML來實現什麼您需要使用closest()和直接子選擇器>才能獲得父母td。試試這個:

var $td = $('#firstname').closest('.class1 > td'); 

Example fiddle

+0

所以'.class1'給出最接近的值表示這個類是最接近'firstname'任何元素? – Sunil

+1

是的。 'nearest()'遍歷DOM以找到與提供的選擇器匹配的最近父元素。在這種情況下,它正在尋找一個'td'元素,它是'.class1'的直接後代。 –

+0

此外,似乎'.class1> td'將直接在class1元素下找到所有的td元素,但是由於您提到最接近firstname,所以我們得到了最接近的兩個tds之一。 – Sunil