jQuery .val()和.attr('value')之间有什么区别?

时间:2011-01-29 13:35:09

标签: jquery

我觉得标题很清楚

3 个答案:

答案 0 :(得分:82)

.val()以有用的方式处理所有输入类型元素,包括<select> ...即使在<select multiple>,复选框和单选按钮的情况下({{3}获取或设置所选值的数组而不仅仅是字符串)。

所以基本上它们用于不同的目的,即使.val()在某些情况下表现相同,例如文本框。首选方法是.attr('value'),以便在任何地方获得一致的行为。


只是为了踢,这里有一个鲜为人知的复选框示例,使.val()得心应手:

<input name="mytest" type="checkbox" value="1">
<input name="mytest" type="checkbox" value="2">
<input name="mytest" type="checkbox" value="3">
<input name="mytest" type="checkbox" value="4">

你可以这样做:

$("input[name='mytest']").val([1, 2, 3]);

....将检查前3个方框。 .val()

答案 1 :(得分:9)

此外.attr('value')返回编辑输入字段之前的值。 并且.val()返回当前值。

答案 2 :(得分:1)

添加到actis的答案......

  

另外.attr('value')返回编辑输入之前的值   领域。并且.val()返回当前值。

使用文本输入字段时,.attr()和.val()的setter方法的工作方式不同。

.val('newval')

将设置用户在页面上看到的值,并更新后续.val()方法调用返回的值。它不会设置元素的value =属性。

OTOH

.attr('value','newval')

将在元素上设置value =属性。如果用户没有输入并且没有调用.val(newval),那么这样做也会直观地更新控件并更新.val()返回的值。

您可以使用以下jsfiddle进一步调查:

https://jsfiddle.net/jasonnet/vamLww2k/

祝你好运。