有时候用 $.attr('value', '123') 才能把值附上, 有时候得用 $.val('123') 才行, 这是怎么回事有遇到的吗
$.attr('value', '123')这里的value是指元素节点上的属性值,即DOM节点上的属性值;
而$.val('123')是input的属性值,当其value值被赋值时则是通过setter方法定义的。
例如:<input id="s1" type="" name="" value="2">
这个value="2"和input的value值是两个概念。
value="2"是DOM结点上的属性值,如果想改变这个属性值,需要这样操作$("#s1").attr("value","123"),这个属性值是可见的。
input上的值是它本身的value值,如果想获取则是$.val(),如果想赋值则用$.val('123')。
改变或者获取<input>、<textarea>、<select>、<option>、<button>的值都是用val(),改变或者获取DOM节点上的属性值,则用attr()
自己多试试就理解了。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-01-14
这个是jquery封装的问题,一般来说attr是给元素的属性赋值,这个适用于所有的html元素。val试用于所有的可用val取值的元素。有一些input元素为了方便取值jquery封装了val方法,但是并不是试用所有元素。
第2个回答 2019-01-14
input表单的赋值方法一般情况都是用“选择器.val("值")”,很少用“选择器.attr("属性名","属性值")”,“选择器.val("值")”是表单的专属赋值和取值的方法,用在其他的节点没有用比如“<a></a>“,”<div></div>”等这些非表单控件就会用“选择器.attr("属性名","属性值")”来添加属性属性值和取得属性值。
<script type="text/javascript">/**
* 表单控件
*/
//赋值:给<input type="text" name="text1" id="text2"/>赋值
$("input").val("请输入文本");
//取值:取得<input type="text" name="text1" id="text2"/>的值
$("input").val();
/**
* 非表单控件
*/
//赋值:添加class属性 -> $("span").addClass("class");
$("span").attr("class","class");
//取值:获取div属性id的值
$("div").attr("id");
</script>
第3个回答 2019-01-14
简单来说,如果html元素是input,那两种方法都可以,如果不是,那只能用attr这种方法,希望对你有帮助