.attr("value") 总是返回未定义?

Kya*_*ite 5 html javascript jquery

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

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

但是,当我尝试打印 valID 时,它总是打印为未定义?我究竟做错了什么?

谢谢

Jos*_*ier 5

.prop()使用or.val()方法获取当前属性总是更安全value

var valID = $("#1val").val();
// or
var valID = $("#1val").prop("value");
Run Code Online (Sandbox Code Playgroud)

从 jQuery 1.9 版本开始,该.attr()方法将仅获取元素的属性,这可能无法真正反映元素的实际属性。


根据1.9 版发行说明,在.attr()vs下.prop()

输入元素上的 value 属性与 attribute 是这种歧义的另一个例子。该属性通常反映从 HTML 标记读取的值;该财产反映了当前价值。由于该.val()方法是推荐的 jQuery 获取或设置表单元素值的方法,因此这种混淆通常不会影响用户。

但是,当使用类似的选择器时input[value=abc],它应该始终通过 value 属性进行选择,而不是用户对属性所做的任何更改,例如在文本输入中键入内容。从 jQuery 1.9 开始,这种行为正确且一致。早期版本的 jQuery 有时会在应该使用该属性时使用该属性。

从 1.9 版本开始,该.attr()方法将仅返回元素的当前属性(而不是属性)。属性和属性实际上可能并不相同。例如,如果元素上最初没有属性,然后使用诸如 之类的方法以编程方式设置该值.val(),则该属性不会发生更改,意味着.attr('value')将返回undefined

如上所述,使用.prop()or.val()方法来获取元素的当前value属性。


glu*_*ree 2

用于$('#input-id').val();获取输入值。

  • 在 HTML 4 中,ID 属性不能以数字开头。 (4认同)
  • 当然是首选方式,但不能解释OP的问题 (2认同)