2012-07-02 7 views
1

Кажется, что jQuery возится со мной, хотя это, вероятно, простая проблема. Мой код попадает в DOM-элемент, который я хочу получить, но когда я добавляю .val(), он возвращает пустую строку.jQuery .val() возвращает пустую строку

$('tr.invoice td[data-attr=Payed] div.true').closest('tr').find('td[data-attr=Expiration]') 
Returns this: 
[<td data-attr=​"Expiration">​2012-04-22​</td>​,<td data-attr=​"Expiration">​2012-05-21​</td>​,<td data-attr=​"Expiration">​2012-06-18​</td>​] 

Как вы можете увидеть DOM-элементов имеет значения, но если я добавить .val() в JS-строки возвращает пустые строки (но не определено, пустые)

ответ

11

Метод val() используется для input и select элементов.

Вместо этого вы должны использовать html() или text().

$('tr.invoice td[data-attr=Payed] div.true') 
    .closest('tr') 
    .find('td[data-attr=Expiration]') 
    .each(function() { 
     // getting inner HTML 
     var html = $(this).html(); 
    } 
); 
+1

Глупо меня (doh '). Спасибо –

+0

@AntonGildebrand Добро пожаловать;) – VisioN

+0

[Посмотрите на это] (http://stackoverflow.com/a/11302685/601179) codeParadox friend – gdoron

3

<td> s не имеют значения, поэтому ничего не вернется. .val() используется только для элементов формы, таких как <inputs> и <select> теги. Чтобы получить содержимое элемента, используйте вместо него .html() или .text().

Разница между .html() и .text() заключается в том, что первые будут содержать теги в возвращаемой строке, а .text() вернет содержимое любых тегов. В этом примере HTML:

<div> 
    <strong> 
     Hello world 
     <span>How're you doing?</span> 
    </strong> 
</div> 

$('div').html() дает эту строку (форматированный хорошо для ясности):

<strong> 
    Hello world 
    <span>How're you doing?</span> 
</strong> 

В то время как $('div').text() дал бы это:

Hello worldHow're you doing? 
3

.val() для элементов формы, а не текстовые значения. Используйте .text() intstead.

Fiddle: http://jsfiddle.net/L8V4A/

EDIT: Извинения на плохой связи.

+0

не посторонний, но я изменил описание ссылки, так как вы сказали, что это было скрипка. – BZink

+1

@BZink: Мой CMD-C, должно быть, пропустил, извинился, и он исправлен! – Josh