jQuery 选择具有特定标题的表格单元格
我有一个带有“标题”的表,该表使用常规 tr 标签(不是 th)。我需要找到标题“Col2”,然后为 Col2 下的每个单元格添加一个锚点。我可以执行 $("td:contains('Col2'))
来查找标题,但数据行也可以有“Col2”。我如何只搜索第一行,然后循环遍历行单元格?
<table>
<tr>
<td>Col1</td>
<td>Col2</td>
</tr>
<tr>
<td>Data1</td>
<td>Data2</td>
</tr>
<tr>
<td>Data3</td>
<td>Data4</td>
</tr>
</table>
变为:
<table>
<tr>
<td>Col1</td>
<td>Col2</td>
</tr>
<tr>
<td>Data1</td>
<td><a href="?Data2">Data2</a></td>
</tr>
<tr>
<td>Data3</td>
<td><a href="?Data4">Data4</a></td>
</tr>
</table>
编辑:我实际上在同一页面中有多个表格:first
仅匹配第一个表格中的第一行
更新 。 :这是我最终如何让它工作的,感谢大家的帮助!现在我已经开始掌握它的窍门了。 ,我无法想象在没有 jQuery 的情况下执行此操作的痛苦。
$('table').each(function(i, table) {
$(table).find('tr:first > td:contains("Col2")').each(function() {
var cellIndex = $(this).index() + 1;
$(table).find('tr:not(:first) > td:nth-child(' + cellIndex + ')').wrapInner(function() {
return $('<a />', { 'href': '?data=' + $(this).text() });
});
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用
.index()
和.wrapInner(function)
像这样:您可以在此处查看示例,这会获取包含
"Col2 的
(基于 0)然后使用的索引"
:nth-child( )
选择器(基于 1,因此我们添加 1)来获取您想要的 元素.com/wrapInner/" rel="nofollow noreferrer">.wrapInner()
。之后,我们只需返回通过$(html,道具)
。You can do it using
.index()
and.wrapInner(function)
like this:You can see an example here, this gets the index of the
<td>
that contains"Col2"
(0-based) then uses the:nth-child()
selector (1-based, so we add 1) to get the<td>
elements you want to.wrapInner()
. After that we're just returning the structure to wrap them in, generated via$(html, props)
.[查看实际操作]
[See it in action]
您是否尝试过使用“:first”选择器(包括“not(:first)”)
http:// /api.jquery.com/first-selector/
have you tried using the ":first" selector (including "not(:first)")
http://api.jquery.com/first-selector/
我会执行以下操作:
搜索标题行以查找具有匹配条件的列,然后获取列索引。然后选择表中从该列索引处找到的第二行开始的所有行。然后创建你的锚点。如果您需要帮助,我可以尝试编写一些代码。
I would do the following:
search header row for column with matching criteria and then get column index. Then select all rows in the table starting from the second one that are found at that column index. Then create your anchors. I can try to write up some code if you need help with that.