感觉就像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字符串,它只返回空字符串(不是未定义的,空的)
答案 0 :(得分:12)
方法val()
用于input
和select
元素。
$('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)
答案 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?