2009-05-08 2 views
18

Предположим, если у меня есть несколько таблиц на моей странице HTML (без атрибута «id»), так как я могу выбрать первую строку первой таблицы или любой конкретной таблицы с помощью селекторов jQuery?Как выбрать первую строку первой таблицы на странице html с помощью jQuery?

ответ

32
$("table:first > tr:first") 

или

$("table:first").find("tr:first") 

или

$("table:first").children("tr:first") 

или

$("table").eq(0).children("tr").eq(0) 

Так что, если я понимаю, вопрос ...

последующую
$("table:eq(1) tr:has(table:eq(2))") 

переводит: получить любые Tr во 2 таблицы, если тр имеет 3-ю таблицу

или

$("table").eq(1).children("tr:has(table:eq(2))") 
+0

Спасибо, Чад, его рабочий (только второй вариант). Но следующий вопрос: если я хочу выбрать любую строку второй таблицы на моей странице, если она содержит 3 таблицы.Команда, которую вы предложили, успешна только для первой или последней таблицы; как насчет промежуточных таблиц. Спасибо – 2009-05-08 09:40:45

+0

jQuery действительно гибкий, и мне нужно будет увидеть вашу структуру html, чтобы предоставить точные примеры. Первый пример в моем коде не работал бы, если бы у вас были теги в вашей таблице. Пожалуйста, напишите несколько примеров HTML, и я могу взломать селектор –

+0

Я бы предложил обменивать '.children (" tr: first ")' for '.find ('> tbody> tr,> tr')', поскольку [некоторые браузеры добавляют 'tbody' для всех таблиц, а некоторые нет) (http://stackoverflow.com/questions/1858267/how-to-find-tr-inside-table-with-depth-1) – user568458

0

Хотя не JQuery конкретно, я был введен в Dóm селекторы в этом w3c selectors page. Это очень подробный, но полный сложных примеров.

+0

и что поддерживает последний jQuery через их механизм выбора, Sizzle: http://wiki.github.com/jeresig/sizzle –

1

Используя метод jQuery's eq(), вы можете указать индекс элемента, который хотите получить.
Это будет выбрать первую строку второй таблицы, найденной в DOM

$('table:eq(1) tr:first') 
+0

Фактически это будет выбирать первую строку в третьей таблице. eq() основано на нуле –

+0

Вы правы, Chad I tottaly забыл об этом, исправлен. – duckyflip

5

то, что вы можете использовать, чтобы выбрать п-ю строку в п-й таблицы:

$("table:eq(n) tr:eq(n)") 

с п бытия нулевой индекс таблицы или tr.

Пример:

$("table:eq(2) tr:eq(4)") 

получает 5-ую строку таблицы 3.

2

@ Ответ svinto - это, безусловно, самый короткий, быстрый и простой способ достичь этого. Если вы действительно , связанные с производительностью (например, выбор в произвольной комплексной для цикла), то это, возможно, скорее всего, окажется чуть быстрее:

$('tr').eq(0) 

Если вам не нужно использовать только JQuery селекторы и фактически требуют элемент DOM <TR>, вы можете использовать:

$('table')[0].rows[0] 

в качестве альтернативы:

$('tr')[0] 
Смежные вопросы