jQuery: value () и text () не возвращают текст ячейки таблицы - PullRequest
4 голосов
/ 24 февраля 2010

Мне, должно быть, здесь не хватает чего-то простого. Просвети меня.

Я пытаюсь получить идентификатор (289 в этом примере):

<tr class="header">
  <th>ID</th>
  <th>2</th>
  <th>3</th>
</tr>

<tr class="highlight">
  <td class="">289</td>
  <td class="">field a</td>
  <td class="">field b</td>
</tr>
... more rows

Я использую этот селектор:

$("#requests :nth-child(2) td:first")

Консоль Firebug показывает это:

Object { length=1,  more...}

Отлично. Схватив первый элемент этого:

>>> $("#requests :nth-child(2) td:first")[0]
<td class="">

Итак, я подумал, что мог бы вызвать text() или value() или какой-нибудь такой метод для этого.

Если я смотрю на вкладку DOM в Firebug, я вижу, что у меня есть "childNodes" и "firstChild" с <TextNode textContent="289">, но я не могу понять, как получить это.

Ответы [ 3 ]

9 голосов
/ 24 февраля 2010

Вам нужно написать $("#requests :nth-child(2) td:first").text().

Использование индексатора объекта jQuery ($(...)[0]) вернет необработанный элемент DOM.
Если вы хотите вызывать методы jQuery, вам нужно вызывать их непосредственно в объекте jQuery, без использования индексатора.
Если вы хотите вызвать метод jQuery для одного элемента в наборе jQuery, вызовите eq, например: $(...).eq(3).text().

В jQuery нет метода value().
Метод val устанавливает или возвращает значение элемента формы.

2 голосов
/ 24 февраля 2010

Когда вы используете скобочную нотацию для извлечения объекта из объекта jQuery, он получает необработанный элемент dom.Вместо этого используйте $('selector').eq(0).Тогда ваши методы должны работать.

0 голосов
/ 24 февраля 2010

.text() возвращает весь текст в элементе, поэтому он должен работать.

Не видя больше вашего HTML, невозможно узнать, если ваш

$("#requests :nth-child(2) td:first")

соответствует рассматриваемому элементу

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