我有这个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++
,这是人们所期望的,我没有得到任何弹出的问题。谁能告诉我我做错了什么?
答案 0 :(得分:5)
问题是你没有转义内部选择器中的单引号,所以你在这一点上有效地退出了字符串,这就是抛出一个错误。改变这个:
alert($('td:eq($('td').index($('td:contains(C++)')))').text())
对此:
alert($('td:eq(' + $('td').index($('td:contains(C++)')) + ')').text())
答案 1 :(得分:1)
以下应该有效:
alert($('td:eq('+$('td').index($('td:contains(C++)'))+')').text())