2009-11-18 1 views
4

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

ответ

1

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

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

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

Это выбирает только ТД один на один раз. И петля может быть массивной для большой таблицы. –

+0

Согласовано, а не решение. Очень неэффективный способ обойти это. – redsquare

6

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

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

Мне нравится чистота jQuery. Отличный ответ. –

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> 
Смежные вопросы