如果文本存在,则返回行号

时间:2017-10-19 21:17:35

标签: jquery

如果表格包含“存储”文本

,我想获取行号

表格如下:

Product    | Apple | Lenovo | HTC  | Samsung | LG
Camera     | 20MP  | 12MP   | 22MP | 20MP    | 20MP
RAM        | 4GB   | 4GB    | 4GB  | 3GB     | 2GB
Storage    | 32GB  | 32GB   | 32GB | 32GB    | 32GB
Expandable | No    | Yes    | No   | Yes     | Yes
Contract   | No    | Yes    | Same | Yes     | Yes

在这种情况下,代码应该返回值'4',但我的下面不起作用

var tid=$("tr td:contains('Storage')").index();

你能帮我纠正我的代码吗?我只是编程的初学者,所以请帮助我。

1 个答案:

答案 0 :(得分:0)

jQuery selectors 仅适用于格式正确的 HTML。
问题可能出在你的桌子上。

例如,如果省略<table>tr td:contains选择器将不会工作:

var tid = $("tr td:contains('Storage')").index();
console.log(tid);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<tr>
  <td>Storage</td>
</tr>

但如果你加<table>tr td:contains选择器工作:

var tid = $("tr td:contains('Storage')").index();
console.log(tid);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
  <tbody>
    <tr>
      <td>Storage</td>
    </tr>
  </tbody>
</table>

请注意,上面两个片段中的jQuery都是相同,并且每个<td>元素中都有一个<tr>元素,其中包含文本Storage

第二个片段明确指定<tbody>,但请注意,如果您不手动指定,解析器将自动假设您想要使用<tbody>,并为您添加它。

希望这有帮助! :)