Селекторы jQuery выбирают 2-ю ячейку 2-го ряда 2-й таблицы формы с определенным действием - PullRequest
6 голосов
/ 04 января 2012
<form action="blah">
  <table>...</table>
  <table>
     <tr>...</tr>
     <tr>  
         <td>...<td>
         <td> **some text that changes** </td>

Учитывая приведенную выше структуру html, как мне получить изменяемый текст, используя jQuery

Так что я хочу, чтобы jquery осуществлял поиск следующим образом:-Выберите 2-ю таблицу формы -Выберите 2-ую строку (tr) таблицы -Выберите 2-ую ячейку (td) строки -Дайте мне текст

Это поможет мне лучше понять jquery ..Я новичок в этом.

Что-то вроде $ ('form [action = "blah"]'). tables (2) .rows (2) .cells (2) .text, но это не такдействительное соответствие jquery

Ответы [ 3 ]

6 голосов
/ 04 января 2012

Итак, вы хотите, чтобы вторая ячейка таблицы во второй строке таблицы второй таблицы?Функция eq может сделать это простым

DEMO

var text = $("table:eq(1) tr:eq(1) td:eq(1)").text();

Также обратите внимание, что вы неправильно закрыли эту ячейку таблицы:

<td>...<td>

должно быть

<td>...</td>

РЕДАКТИРОВАТЬ

Если на странице есть другие таблицы, и вы хотите убедиться, что получиливторой на в форме , затем добавьте форму в ваш селектор:

var text = $("form[action='blah'] table:eq(1) tr:eq(1) td:eq(1)").text();
2 голосов
/ 04 января 2012

Цель, а затем углубиться в поиск. У Адама была правильная идея. Вы просто хотите избежать создания одного гигантского селектора. Это компромисс между удобочитаемостью и скоростью.

Если вы хотите полностью оптимизировать, не стесняйтесь делать каждый шаг с помощью find (). Но если этот селектор не проверяется повторно, это не должно иметь значения.

$('form[action="blah"]').find("table:eq(1) tr:eq(1) td:eq(1)").text();

jsFiddle

2 голосов
/ 04 января 2012

Вы можете использовать .eq(index).
. Чтобы выбрать второй элемент, используйте eq(1).
Рабочая jsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...