我有一个带有“标题”的表,该表使用常规 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>
Becomes:
<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>
Edit:实际上,我在同一页面中有多个表。:first
仅匹配第一个表中的第一行。
Update:这就是我最终让它发挥作用的方法。感谢大家的帮助!有了你们每个人的一点帮助以及 API 文档的一点帮助,它就可以工作了。现在我开始掌握它的窍门,我无法想象在没有 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() });
});
});
});
你可以使用.index() http://api.jquery.com/index/ and .wrapInner(function) http://api.jquery.com/wrapInner/像这样:
var i = $("table tr td:contains('Col2')").index() + 1;
$("table tr:gt(0) td:nth-child(" + i +")").wrapInner(function() {
return $("<a />", { "href": "?" + $(this).text() });
});
你可以在这里看到一个例子 http://jsfiddle.net/24ssM/1/,这得到了索引<td>
其中包含"Col2"
(从 0 开始)然后使用:nth-child()选择器 http://api.jquery.com/nth-child-selector/(基于 1,所以我们添加 1)得到<td>
你想要的元素.wrapInner() http://api.jquery.com/wrapInner/。之后,我们只是返回将它们包装起来的结构,通过生成$(html, props) http://api.jquery.com/jQuery/#jQuery2.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)