问题描述
// 当选择“微信用户签到抽奖”时,触发
$(’#weChatSignIn’).click(function(){
$(’#wechat’).attr(‘checked’,‘checked’);
});
// 选择“导入名单抽奖”触发
$(’#importNameList’).click(function(){
$(’#import’).attr(‘checked’,‘checked’);
});
效果:无论怎么点击,都是第一个radio选中
原因
这里的主要原因是用attr()函数来设置元素的属性, attr()方法主要是用来处理自定义的DOM属性
解决
换成prop()函数来设置属性就正常了,如下面所示:
// 当选择“微信用户签到抽奖”时,触发
$(’#weChatSignIn’).click(function(){
$(’#wechat’).prop(‘checked’,‘checked’);
});
// 选择“导入名单抽奖”触发
$(’#importNameList’).click(function(){
$(’#import’).prop(‘checked’,‘checked’);
});
prop()方法主要是用来处理本身就带有的固有属性,W3C标准里面说明的属性,或者在IDE里面能够智能提示的属性,都是固有属性,可以结合这篇文章一起看:http://blog.youkuaiyun.com/tangxiujiang/article/details/76735188
prop 还是 attr
具有true和false属性的属性,就使用prop(),比如checked selected disabled等,其他的使用attr()

该博客探讨了一个在jQuery中使用attr()函数设置radio按钮选中状态时遇到的问题,即无论点击哪个选项,始终只有第一个radio被选中。问题的根源在于attr()不适于处理固有属性。解决方案是改用prop()函数,因为prop()适用于处理如checked这样的布尔属性。文章还强调了prop()和attr()的区别,并提供了修正后的代码示例。
3万+





