首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery .val()返回空字符串

jQuery .val()返回空字符串
EN

Stack Overflow用户
提问于 2012-07-03 03:35:49
回答 3查看 5.8K关注 0票数 2

虽然这可能是一个简单的问题,但感觉像是jQuery在给我添乱。我的代码get指向我想要获取其值的DOM元素,但是当我添加.val()时,它返回一个空字符串。

代码语言:javascript
运行
复制
$('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字符串中,它只返回空字符串(不是未定义的,为空)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-03 03:37:21

方法val()用于inputselect元素。

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

代码语言:javascript
运行
复制
$('tr.invoice td[data-attr=Payed] div.true')
    .closest('tr')
    .find('td[data-attr=Expiration]')
    .each(function() {
        // getting inner HTML
        var html = $(this).html();
    }
);
票数 12
EN

Stack Overflow用户

发布于 2012-07-03 03:38:16

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2012-07-03 03:37:39

<td>%s没有值,因此不会返回任何内容。.val()仅用于表单元素,如<inputs><select>标记。要获取元素的内容,请改用.html().text()

.html().text()的区别在于前者会在返回的字符串中包含标签,而.text()只会返回任何标签的内容。在此示例中,HTML:

代码语言:javascript
运行
复制
<div>
    <strong>
        Hello world
        <span>How're you doing?</span>
    </strong>
</div>

$('div').html()给出了这个字符串(为清晰起见,格式很好):

代码语言:javascript
运行
复制
<strong>
    Hello world
    <span>How're you doing?</span>
</strong>

$('div').text()会给出这样的信息:

代码语言:javascript
运行
复制
Hello worldHow're you doing?
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11300043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档