我想在下面的HTML结构中用Jquery将“Yes!Pick me”更改为“Picked”,我使用了$('#myDiv>table>tr>td>table>tr').eq(1).text("Picked");
但它没有用。有人可以对此有所了解吗?谢谢!
仅供参考,第一个表的第一个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");
部分可以解决问题,我忘记了最后一部分。感谢Rocket和大家的帮助。
答案 0 :(得分:7)
试试这个:
$("#myDiv table table td:first").text("Picked")
答案 1 :(得分:4)
$('#myDiv').find('table table td').eq(0).text(...);
在#myDiv
元素($('#myDiv')
)处开始您的选择,然后找到位于另一个表(.find('table table td')
)内的表内的所有TD元素,然后仅更改第一个(.eq(0)
)。
文档:
.find()
:http://api.jquery.com/find .eq()
:http://api.jquery.com/eq 答案 2 :(得分:0)
主要问题是,您希望.eq(0)
而不是.eq(1)
因为.eq()
是基于0的,并且您没有选择td
,只选择tr
}。
除了使用>
直接后代选择器之外,你的选择根本不是很强大。
尝试$('#myDiv table table td').eq(0).text('Picked');
答案 3 :(得分:0)
您可以尝试:
$("td:contains('Yes! Pick me!')").text("Picked");
答案 4 :(得分:0)
您可以使用:contains(文本)选择器
$('#myDiv td table td:contains(Yes! Pick me!)').text('Picked');
请注意嵌套表格,因为如果您只使用
$('#myDiv td:contains(Yes! Pick me!)').text('Picked');
你会得到你的后面的单元格加上它嵌套的单元格。
答案 5 :(得分:0)
您的子选择器查询将无效,因为HTML5要求解析器在<tbody>
元素中插入<table>
元素,因为您忘记将它们放入自己。也许您应该考虑验证您的HTML?