在jQuery中迭代表中的第二列

时间:2013-01-24 03:25:49

标签: javascript jquery html dom

我在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。

任何想法如何做到这一点?

谢谢!

3 个答案:

答案 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>

http://jsfiddle.net/GshRz/1/

根据您的结构(可能包含$("#table").children("tbody").children("tr").children("td:nth-child(2)").each(function () { }); ),您可以使用<thead>而不只是.children("thead, tbody")

此外,如果您想要抓取多个列,可以更轻松地选择.children("tbody")元素,然后获取其子<tr>元素。例如:

<td>

http://jsfiddle.net/GshRz/2/

您使用的选择器和位置取决于表的结构和内容。因此,请记住区分$("#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以及findnth-child

答案 2 :(得分:0)

$("#table td:nth-child(2)").each(function (index) {
   alert('Row no. ' + (index+1) + ', Column 2 : ' + $(this).html());
});

Sample