4

ヘッダー ID を持つテーブルがあります。このヘッダーの下にあるすべてのフィールドを選択する必要があります。ソース コードへのアクセス権がなく、このテーブルで使用されているクラスはありません。これを行う方法について何か考えはありますか?

4

3 に答える 3

6

最初の列を取得するには:

$(function() {
   var col = $("td:nth-child(1)");
});
于 2009-11-18T22:29:28.923 に答える
2

最も簡単なのは、行内のヘッダーの位置 (インデックス) を取得してから、同じ列インデックスにあるすべてのセルの値にアクセスすることです。

$('#table th').click(function() {
    var th = $(this);
    var index = $('th', th.parents('tr')).index(th);
    var column = $('tbody td:nth-child(' + (index + 1) + ')', th.parents('table'));
    var values = column.map(function() {
        return $(this).text();
    });
    alert($.makeArray(values));
});

これは、次の例に基づいています。

<table id="table">
    <thead>
        <tr><th>head1</th><th>head2</th><th>head3</th></tr>
    </thead>
    <tbody>
        <tr><td>cell1a</td><td>cell2a</td><td>cell3a</td></tr>
        <tr><td>cell1b</td><td>cell2b</td><td>cell3b</td></tr>
        <tr><td>cell1c</td><td>cell2c</td><td>cell3c</td></tr>
    </tbody>
</table>
于 2009-11-18T22:40:30.337 に答える
1

:eq(index) フィルターを使用する必要があります。

選択したい列のインデックスを決定したら (それを と呼びましょうidx)、次のことができます。

$('#yourTableID tr').each(function(){
  // for each row:
  var myField = $(this).children('td:eq('+idx+')');
  // do stuff with the selected field
});
于 2009-11-18T22:21:25.347 に答える