如何使用Jquery选择此特定td元素及其文本

时间:2012-02-24 20:57:02

标签: javascript jquery html html-table

我想在下面的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和大家的帮助。

6 个答案:

答案 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))。

文档:

答案 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?