我有一个隐藏的元素,在我的jQuery中:
<input type="hidden" id="1val" value="24">
var valID = $("#1val").attr("value");
但是当我尝试打印valID时,它总是打印为undefined?我做错了什么?
由于
答案 0 :(得分:3)
使用.prop()
或.val()
方法获取当前value
属性总是更安全:
var valID = $("#1val").val();
// or
var valID = $("#1val").prop("value");
从jQuery版本1.9开始,.attr()
方法只会获取元素的属性,这可能实际上并不反映元素的实际属性。
根据版本1.9 release notes,在.attr()
与.prop()
下:
输入元素的value属性与属性是这种歧义的另一个例子。该属性通常反映从HTML标记中读取的值;该属性反映当前值。由于
.val()
方法是获取或设置表单元素值的推荐jQuery方法,因此这种混淆通常不会影响用户。但是,当使用像
input[value=abc]
这样的选择器时,它应始终通过value属性进行选择,而不是用户对属性所做的任何更改,例如从键入文本输入中进行选择。从jQuery 1.9开始,这种行为正确且一致。早期版本的jQuery有时会在使用属性时使用该属性。
从版本1.9开始,.attr()
方法只返回元素的当前属性(而不是属性)。属性和属性实际上可能不相同。例如,如果元素最初没有属性,然后使用.val()
等方法以编程方式设置该值,则该属性不会改变.attr('value')
将返回{{}的含义1}}。
如上所述,使用undefined
或.prop()
方法获取元素的当前.val()
属性。
答案 1 :(得分:2)
使用$('#input-id').val();
获取输入值。