我有这个 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++
的弹出窗口,这是人们所期望的,我没有看到任何关于此的弹出窗口。谁能告诉我我做错了什么?
最佳答案
问题是您没有转义内部选择器中的单引号,因此您实际上是在此时退出字符串,这会引发错误。改变这个:
alert($('td:eq($('td').index($('td:contains(C++)')))').text())
对此:
alert($('td:eq(' + $('td').index($('td:contains(C++)')) + ')').text())
关于javascript - 为什么这个方法在另一个方法中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863286/