jquery checkbox勾选/取消勾选的诡异问题

最近开发的时候突然与到有这样的一个问题(记录下解决的方法):

<html xmlns="http://www.w3.org/1999/xhtml">
    <hear>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JQuery測試</title>

        <script type="text/javascript" src="../../JQuery/jquery.min.js"></script>
    </hear>
    <body>
        <form>
         你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br />
         <input type="checkbox" id="football" name="items" value="足球" />足球
         <input type="checkbox" name="items" value="篮球" />篮球
         <input type="checkbox" name="items" value="羽毛球" />羽毛球
         <input type="checkbox" name="items" value="乒乓球" />乒乓球
         <br />
         <input type="button" id="send" value="提 交" />
        </form>


        <script type="text/javascript">
             $("#CheckedAll").click(function () {
                 if ($(this).is(":checked")) {
                     $("[name=items]:checkbox").attr("checked", true);
                } else {
                     $("[name=items]:checkbox").attr("checked", false);
                }
             });

            //点击checkbox后打印其checked属性值 为undefined

             $("#football").click(function(){
                var football = $(this).attr("checked"); 
                console.log(football) ;
             }) ;

        </script>
    </body>
</html>

第一次执行,没问题,但第二次执行就有问题了,选择不了;

解决办法:把attr()换成prop()

$("#CheckedAll").click(function () {
                if ($(this).is(":checked")) {
                    $("[name=items]:checkbox").prop("checked", true);
                } else {
                    $("[name=items]:checkbox").prop("checked", false);
                }
            });

原因:
jQuery版本问题。我操作属性用的是 $(“**”).attr(“attrName”);而jQuery的版本用的是1.9,这就是存在一个兼容性和稳定性问题。 jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断,即

$("input[type='checkbox']").prop("checked"); 
$("input[type='checkbox']").prop("disabled", false); 
$("input[type='checkbox']").prop("checked", true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值