jQuery: как выбрать значения из столбца таблицы, основываясь только на заголовке таблицы - PullRequest
4 голосов
/ 19 ноября 2009

У меня есть таблица с идентификатором заголовка. Мне нужно выбрать все поля под этим заголовком. У меня нет доступа к исходному коду, и в этой таблице не используются классы. Любая идея о том, как это сделать?

Ответы [ 3 ]

6 голосов
/ 19 ноября 2009

Чтобы получить первый столбец:

$(function() {
   var col = $("td:nth-child(1)");
});
2 голосов
/ 19 ноября 2009

Самое простое - получить позицию (индекс) заголовка в строке, а затем получить доступ ко значению всех ячеек с одним и тем же индексом столбца.

$('#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>
1 голос
/ 19 ноября 2009

Вы должны использовать фильтр: eq (index).

Определив индекс столбца, который вы хотите выбрать (назовем его idx), вы можете сделать:

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