2012-02-24 39 views
4

我想用下面的HTML結構中的Jquery將「Yes!Pick me」改爲「Picked」,我使用$('#myDiv>table>tr>td>table>tr').eq(1).text("Picked");但它不起作用。請問有人可以點亮一下嗎?謝謝!如何使用Jquery選擇這個特定的td元素及其文本

僅供參考,第一個表的第一個TD本身包含另一個表...

<div id="myDiv"> 
    <table> 
     <tr> 
     <td> 
      <table> 
      <tr> 
       <td>Yes! Pick me!</td> 

       <td>Not me..</td> 
      </tr> 

      <tr> 
       <td>Not me..</td> 
      </tr> 
      </table> 
     </td> 

     <td>Not me..</td> 
     </tr> 

     <tr> 
     <td>Not me..</td> 
     </tr> 
    </table> 
    </div> 

的部分$('#myDiv>table>tr>td>table>tr>td').eq(1).text("Picked");的伎倆,我忘了最後TD一部分。感謝Rocket和大家的幫助。

+1

你爲什麼不給你想要選擇的領域的id? – Neysor 2012-02-24 20:59:33

+0

嗨Neysor,b/c部分代碼是由一個ASP.net用戶控件自動生成的。我只是在這裏發佈一個示例代碼來顯示類似的結構,以便於參考。 thx – eastboundr 2012-02-24 21:02:34

+0

嗨,火箭,工作就像一個魅力!萬分感謝!!!馬虎〜 – eastboundr 2012-02-24 21:05:42

回答

6

試試這個:

$("#myDiv table table td:first").text("Picked") 
+2

我建議'$('表格表td:第一','#myDiv')',以確保你不選擇另一個表。 :-) – 2012-02-24 21:03:44

+1

同意。'$(「$ myDiv table table td:first」)'也可以。 – bfavaretto 2012-02-24 21:07:04

+0

謝謝,bfavaretto,所以我想用空格,這樣它只選擇「標籤的第一次出現」呢? – eastboundr 2012-02-24 21:09:53

3
$('#myDiv').find('table table td').eq(0).text(...); 

#myDiv元素($('#myDiv'))啓動您的選擇,那麼只能找到所有的TD元素是一個表,它是另一個表(.find('table table td'))內內,然後改變第一個(.eq(0))。

文檔:

0

的主要問題是,你要.eq(0).eq(1)作爲.eq()是基於0的,而你不選擇td,只有tr

除了使用>之外,直接後代選擇器使得你的選擇不是很強大。

嘗試$('#myDiv table table td').eq(0).text('Picked');

0

你可以試試:

$("td:contains('Yes! Pick me!')").text("Picked"); ​ 
0

可以使用:包含(文本)選擇

$('#myDiv td table td:contains(Yes! Pick me!)').text('Picked'); 

小心嵌套表格然而,因爲如果你使用只是

$('#myDiv td:contains(Yes! Pick me!)').text('Picked'); 

你會得到這兩個單元格後加上它嵌套在單元格中。

0

您的孩子選擇器查詢不起作用,因爲HTML5要求解析器在您的<table>元素內插入<tbody>元素,因爲您已經忘記將它們放入自己。也許你應該考慮驗證你的HTML?

相關問題