jQuery .val()返回空字符串

时间:2012-07-02 19:35:49

标签: jquery

感觉就像jQuery搞砸了我,虽然这可能是一个简单的问题。我的代码获取了我想要获取值的DOM元素,但是当我添加.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字符串,它只返回空字符串(不是未定义的,空的)

3 个答案:

答案 0 :(得分:12)

方法val()用于inputselect元素。

您应该使用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 :(得分:4)

.val()用于表单元素,而不是文本值。使用.text() intstead。

小提琴:http://jsfiddle.net/L8V4A/

编辑:在错误的链接上道歉。

答案 2 :(得分:3)

<td>没有值,因此不会返回任何内容。 .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?