Bootstrap框架中radio设置值
Bootstrap中的radio设置值不能像我们平常给普通radio赋值那样,因为⽆效。
我们⽤Bootstrap框架⾥的radio组件,代码:
<div class="radio-list">
<label>
<input type="radio" value="1" name="gender" data-title="男"/> 男
</label>
<label>
<input type="radio" value="2" name="gender" data-title="⼥"/> ⼥
</label>
</div>
最后Bootstrap给我们⽣成的代码:
<div class="radio-list">
<label>
<div class="radio">
<span class="checked">
jquery的attr属性<input type="radio" value="1" name="gender" data-title="男" >
</span>
</div> 男
</label>
<label>
<div class="radio"><span><input type="radio" value="2" name="gender" data-title="⼥"></span></div> ⼥
</label>
</div>
Bootstrap做了什么?
简短⼀下,其实是:
<input type="radio" value="1" name="gender" data-title="男"/> 男 这句变成了
<div class="radio"><span><input type="radio" value="1" name="gender" data-title="男"></span></div> 男
其实是在radio外加了⼀个,然后再加⼀个class="radio" 的
如果是选中下的input代码是啥样?
<div class="radio"><span class="checked"><input type="radio" value="1" name="gender" data-title="男"></span></div> 男
选中的不是直接在input上加checked属性,⽽是在input的⽗元素span的class上加的,根据这种规则,
我们在⽗元素上加个checked的class。
于是设置input被选中:$(':radio[name=gender][value='1']').parent().addClass('checked');
咦 发现果然radio被选中了,但是当我设置了input必选的情况下,发现通不过验证,意味着其实没那么简单。
然后我就按照常规 给radio赋值:$(':radio[name=gender][value='1']').parent().addClass('checked').attr("checked",true)
发现问题依旧存在,最后针对attr设置⽆效,⼀搜 发现应该⽤prop(),好吧,是我⽆知了。
最后设置:$(':radio[name=gender][value='1']').parent().addClass('checked').prop("checked",true),
确实可以radio取值就是普通的取值⽅式:
var sex = $(':radio[name=gender]:checked').val();
Jquery的attr()和prop()的区别,还是建议看⼀下。总的来说设置 checked、selected、disabled这类的,在jq的1.6+版本的⼀律⽤prop()设置⽐较好,其它⽤attr()。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。