10

私はこのように見える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(){})たいのですが、2 番目の列だけを繰り返し処理したいのです。したがって、この例では b の値を持つものです。

これを行う方法はありますか?

ありがとうございました!

4

3 に答える 3

28

これを試して:

$("table tr td:nth-child(2)").each(function () {

});
于 2013-01-24T03:30:14.713 に答える
12

nth-childjQuery でセレクターを使用すると、これが機能するはずです。

$("#table").find("td:nth-child(2)").each(function () {

});

これは、nth-childセレクターhttp://api.jquery.com/nth-child-selector/を使用します。これは、リンクの状態として、<td>親の 2 番目の子であるすべての要素 ( a になります<tr>) を選択します。

これを示すフィドルは次のとおりです。http://jsfiddle.net/GshRz/

テーブルにすぐにある sを取得するセレクターを探している場合<td>(ネストされたテーブルにないなど)、次のようなものを使用します。

$("#table").children("tbody").children("tr").children("td:nth-child(2)").each(function () {

});

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

構造 ( を含む場所) によっては、 の代わりに を<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());
});

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

どのセレクターをどこで使用するかは、テーブルの構造と内容次第です。childrenしたがって、とfind、 およびnth-childを区別することを忘れないでeqください。

于 2013-01-24T03:28:54.360 に答える
1
$("#table td:nth-child(2)").each(function (index) {
   alert('Row no. ' + (index+1) + ', Column 2 : ' + $(this).html());
});

サンプル

于 2013-01-24T03:35:04.197 に答える