jq中input为radio设置选中状态,attr问题
现象:attr设置checked值显⽰不正确
$("input[type=radio][value='']").attr("checked","checked");
$("input[type=radio][value='']").attr("checked",true);
两者在html上的修改⼀致,但是页⾯上的显⽰没有更新。
<input type="radio" name="reporttype" value="" checked="checked">
测试改为
$("input[type=radio][value='']").prop("checked",true);
相当于
$("input[type=radio]")[0].checked=true;
设置checked后html改为:
页⾯显⽰也正确。
原因:这⾥涉及两个概念特性(attribute)和属性(Property)。
attribute是dom节点⾃带的属性,如id,class,⾃定义放在html 标签内的属性(customattr)等,放在dom对象的attributes属性中,这个属性的类型是NamedNodeMap。
property是dom元素作为对象,其附加的内容,如childnodes,firstchild等,直接在对象上,部分attribute特性如id,checked,disabled等会被添加到元素对象上,作为dom属性。
⽤.attr()操作⼀般只更改了 attributes中的属性值,如果这个属性是dom元素的⼀个特性属性的话,没有改到对应的特性,特性是内部实现某些功能的参照,⽐如 radio 的checked 特性未改,显⽰的选择状态也没有及时更新到。
html radio点击变颜注:对于当前dom元素有的特性使⽤.prop()进⾏操作,⽽对于没有对应特性的普通属性使⽤.attr()操作就可以了。留坑~~有空再查看jq源码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论