2

感觉就像 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​&lt;/td>​,<td data-attr=​"Expiration">​2012-05-21​&lt;/td>​,<td data-attr=​"Expiration">​2012-06-18​&lt;/td>​]

如您所见,DOM 元素具有值,但如果我将 .val() 添加到 JS 字符串,则它仅返回空字符串(不是未定义的,空的)

4

3 回答 3

12

方法val()用于inputselect元素。

您应该改用html()ortext()方法。

$('tr.invoice td[data-attr=Payed] div.true')
    .closest('tr')
    .find('td[data-attr=Expiration]')
    .each(function() {
        // getting inner HTML
        var html = $(this).html();
    }
);
于 2012-07-02T19:37:21.190 回答
4

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

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

编辑:对坏链接道歉。

于 2012-07-02T19:38:16.263 回答
3

<td>s 没有值,因此不会返回任何内容。.val()仅用于<inputs><select>标签等表单元素。要获取元素的内容,请使用.html()or.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?
于 2012-07-02T19:37:39.367 回答