.attr(" value")总是返回undefined?

时间:2016-01-30 22:09:12

标签: javascript jquery html

我有一个隐藏的元素,在我的jQuery中:

<input type="hidden" id="1val" value="24">
var valID = $("#1val").attr("value");

但是当我尝试打印valID时,它总是打印为undefined?我做错了什么?

由于

2 个答案:

答案 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();获取输入值。

相关问题