我的HTML结构如下所示:
<div id="mainDiv">
<table></table>
<table></table>
<table>
<tr>
<td id="first">FirstCell</td><td id="second">SecondCell</td>
</tr>
<tr>
<td></td><td></td>
</tr>
</table>
</div>
现在我想根据第一个td的值找到第二个td的内容。
我试过以下但似乎没有用。
$("#mainDiv tr td:contains('first')").each(function(){
var secondCell = $(this).find('#second').value();
});
任何帮助都将受到高度赞赏。
答案 0 :(得分:4)
根据您的html结构,您可以实现您想要的效果
$("#mainDiv tr td:contains('First')").each(function(){
var secondCell = $(this).next().text();
console.log(secondCell);
});
与@Blender一样,.value()
不是函数,请改用.text()
。
答案 1 :(得分:1)
值不是有效的方法。
您应该根据要求使用其中一种。
.html() // for html content.
.text() // for text content.
.val() // for value attribute. Like value of input element.
答案 2 :(得分:0)
.value()
不是一个功能。您可能正在寻找.text()
。
查看您的结构,我发现您正在寻找相对于#second
的{{1}}。是否有多个元素#first
?如果是这样,您将会遇到jQuery的 lot 问题,因为id="second"
属性对于单个元素来说是唯一的。如果该属性用于标识多个元素,则应使用id
而不是class
。
答案 3 :(得分:0)
当你使用each
而不是id时,应该使用类名,试试这个:
$("#mainDiv tr td:contains('first')").each(function(){
var secondCell = $(this).siblings('.second').text();
});
答案 4 :(得分:0)
当你说找到时,你的意思是使用正则表达式吗?或者与第一个的关系。
如果通过关系,那么这将起作用
$("#mainDiv tr td:contains('first')").each(function(){
var secondCell = $(this).next().html();
});
.text()有时比.html()更好,具体取决于你在做什么。有关工作示例和更多信息,请参阅here。
如果通过Regex,您必须在第一个<td>
中提供您正在寻找的内容。