Nic*_*ver 82

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

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


只是为了踢,这里是一个鲜为人知的复选框示例,.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">
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

$("input[name='mytest']").val([1, 2, 3]);
Run Code Online (Sandbox Code Playgroud)

....将检查前3个方框. 你可以在这里尝试一下.

  • 还要注意`.attr('value')`读取原始值,而不是当前状态.[另见.](http://stackoverflow.com/questions/8312820/jquery-obj-val-vs-obj-attrvalue) (11认同)

小智 9

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