2012-02-24 84 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?

相关问题