为什么我不能在jQuery中选择我的值?

时间:2012-07-06 07:03:09

标签: jquery html

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

我正在使用jQuery v1.7.2。

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

我有这个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">​</hidden>​]
[<hidden type=​"hidden" value=​"hello" id=​"testid" name=​"testname">​</hidden>​]
(empty line)
(empty line)

为什么我无法访问此值?

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

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

但也许这没关系?

2 个答案:

答案 0 :(得分:5)

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

如果您确实想使用自定义元素,我相信您必须使用.prop()方法:

console.log($('#testid').prop("value"));

答案 1 :(得分:2)

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

你想要<input>。通过自动validator运行HTML通常是一个好主意,可以发现此类错误。

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