1

我有这个 HTML 表:

<table id="languages" border="0" cellspacing="1">
  <thead>
    <tr>
      <th>Language</th>
      <th>Type</th>
      <th>Invented</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Java</td>
      <td>Static</td>
      <td>1995</td>
    </tr>
    <tr>
      <td>Ruby</td>
      <td>Dynamic</td>
      <td>1993</td>
    </tr>
    <tr>
      <td>Smalltalk</td>
      <td>Dynamic</td>
      <td>1972</td>
    </tr>
    <tr>
      <td>C++</td>
      <td>Static</td>
      <td>1983</td>
    </tr>
  </tbody>
</table>

当我运行这个 JavaScript 时:

alert($('td').index($('td:contains(C++)')))

我收到一个弹出消息9,这是我所期望的。

当我运行这个:alert($('td:eq(9)').text())时,弹出窗口说C++,再次与预期相同。但是,如果我尝试将第一个功能/选择而不是硬编码9放在第二个选择器中,就像这样......

alert($('td:eq($('td').index($('td:contains(C++)')))').text())
// just replacing the hard coded 9 with the first selector, as it gives a value of 9

...没发生什么事。我没有收到任何弹出消息C++,这是人们所期望的,我没有收到任何弹出消息。谁能告诉我我做错了什么?

4

2 回答 2

5

问题是您没有转义内部选择器中的单引号,因此您在该点有效地退出了字符串,这会引发错误。改变这个:

alert($('td:eq($('td').index($('td:contains(C++)')))').text())

对此:

alert($('td:eq(' + $('td').index($('td:contains(C++)')) + ')').text())
于 2012-08-08T11:17:33.263 回答
1

以下应该工作:

alert($('td:eq('+$('td').index($('td:contains(C++)'))+')').text())
于 2012-08-08T11:18:19.420 回答