.val()
works on all input type elements in a useful way, including <select>
...even in the cases of <select multiple>
, checkboxes, and radio buttons (in which .val()
gets or sets an array of selected values not just a string).
So basically they serve different purposes, even though .attr('value')
behaves the same in some situations, like textboxes. The preferred method is .val()
to get consistent behavior everywhere.
Just for kicks, here's a lesser-known example for checkboxes that makes .val()
handy:
<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">
You can do this:
$("input[name='mytest']").val([1, 2, 3]);
....which will check the first 3 boxes. You can give it a try here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…