jQuery:如何仅根据表头从表的列中选择值

时间:2009-11-18 22:14:46

标签: jquery select cell

我有一个带标题ID的表。我需要选择此标题下的所有字段。 我无权访问源代码,并且此表中没有使用任何类。 有关如何完成这项工作的任何想法吗?

3 个答案:

答案 0 :(得分:6)

获取第一列:

$(function() {
   var col = $("td:nth-child(1)");
});

答案 1 :(得分: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>

答案 2 :(得分:1)

您应该使用:eq(index)过滤器。

确定了要选择的列的索引后(让我们称之为idx),您可以这样做:

$('#yourTableID tr').each(function(){
  // for each row:
  var myField = $(this).children('td:eq('+idx+')');
  // do stuff with the selected field
});