我在dom中有一个看起来像这样的表
<div id="table">
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
</div>
我想遍历此表,例如$('#table').each(function(){})
,但我只想迭代第二列。所以在这个例子中的值为b。
任何想法如何做到这一点?
谢谢!
答案 0 :(得分:22)
试试这个:
$("table tr td:nth-child(2)").each(function () {
});
答案 1 :(得分:11)
在jQuery中使用nth-child
选择器,这应该可行:
$("#table").find("td:nth-child(2)").each(function () {
});
这使用nth-child
选择器http://api.jquery.com/nth-child-selector/,作为链接状态,将选择作为其父级的第二个子级的所有<td>
元素(这将是{{1 }})。
这是一个演示它的小提琴:http://jsfiddle.net/GshRz/
如果您正在寻找一个选择器来获取仅在表中立即出现的<tr>
(而不是在嵌套表中),那么请使用以下内容:
<td>
根据您的结构(可能包含$("#table").children("tbody").children("tr").children("td:nth-child(2)").each(function () {
});
),您可以使用<thead>
而不只是.children("thead, tbody")
。
此外,如果您想要抓取多个列,可以更轻松地选择.children("tbody")
元素,然后获取其子<tr>
元素。例如:
<td>
您使用的选择器和位置取决于表的结构和内容。因此,请记住区分$("#table1").children("tbody").children("tr").each(function (i) {
var $this = $(this);
var my_td = $this.children("td");
var second_col = my_td.eq(1);
var third_col = my_td.eq(2);
console.log("Second Column Value (row " + i + "): " + second_col.html());
console.log("Third Column Value (row " + i + "): " + third_col.html());
});
和children
以及find
和nth-child
。
答案 2 :(得分:0)
$("#table td:nth-child(2)").each(function (index) {
alert('Row no. ' + (index+1) + ', Column 2 : ' + $(this).html());
});