javascript - 为什么这个方法在另一个方法中不起作用?

标签 javascript jquery selector

我有这个 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/

相关文章:

javascript - CSS、HTML 和 Javascript : "loading..." spinner doesn't work with link onClick

javascript - 调用函数会出现引用错误,因为函数未定义

javascript - 将 rhino slider 与整页图像一起使用时遇到问题

nested - 我可以创建嵌套的 Angular 组件 HTML 选择器吗?

ios - 如何在swift 3中使用addTarget方法

C# 中的 javascript 函数?

javascript - 如何根据多对一关系过滤 Highchart 绘图数据?

javascript - 过滤选择框时选择第一个值

javascript - localStorage - 删除本地|基于键的存储值

具有 id 的可见元素的 jQuery 选择器