0

真是令人沮丧。我一直像这样使用 .val() ,但现在它不起作用。

我正在使用 jQuery v1.7.2。

我有一个 Facebook 框,我用一个隐藏的值启动它,所以我知道当 Facebook 完成后我应该在主页上更改什么值。

我有这个 HTML 代码:

<hidden type="hidden" value="hello" id="testid" name="testname" />

在 jQuery 中,我记录了:

console.log($('[name="testname"]'));
console.log($('#testid'));
console.log($('#testid').val());
console.log($('[name="testname"]').val());

这输出:

[<hidden type=​"hidden" value=​"hello" id=​"testid" name=​"testname">​&lt;/hidden>​]
[<hidden type=​"hidden" value=​"hello" id=​"testid" name=​"testname">​&lt;/hidden>​]
(empty line)
(empty line)

那么为什么我不能访问这个值呢?

我正在使用带有 AJAX 的 facebox,我知道如果我使用带有 div 的 facebox,它会复制 dom 元素,这样我就可以得到两个具有相同 ID 的元素,但这不应该发生在 AJAX 上吗?然后我会在前两行返回更多元素,不是吗?奇怪的是,如果我检查 Chrome 中的元素,我发现输入框已更改为:

<hidden type="hidden" value="hello" id="testid" name="testname"></hidden>

但也许这并不重要?

4

2 回答 2

5

没有隐藏元素。你的意思是<input type="hidden">

如果您真的想使用自定义元素,我相信您将不得不使用以下.prop()方法:

console.log($('#testid').prop("value"));
于 2012-07-06T07:06:11.887 回答
2

HTML中没有<hidden>元素,因此 jQuery 没有支持其val()方法所需的特殊处理。

你想要<input>。通过可以检测此类错误的自动验证器运行 HTML 通常是一个好主意。

(您也可以使用attr('value'),但编写有效的 HTML 是一个更好的主意)

于 2012-07-06T07:06:40.363 回答