一个页面 上面是很多checkbox, 下面一个checkbox全选按钮 点击全选 上面checkbox全部选中 取消的时候上面的checkbox全部取消 这个是全选按钮  代码 
 $(".chklist input").attr("checked", o.checked);第一次运行 点击全选 上面的checkbox全部选中 
在点击取消 上面的checkbox全部取消 再次点击全选 发现上面全部没有反应 再次点击取消 上面还是没反应 但是用firebug 可以看到上面的checkbox 已经加了checked="checked"属性 这是怎么回事 为何 ?如何解决

解决方案 »

  1.   

    firebug看到已经选中而视图上没表现,你得说清楚有没有用组件处理表单,很多表单美化组件都会替换html标签,比如把select替换为ul li,把checkbox替换为span之类,这种情况下组件可以响应用户点击修改状态,但代码修改状态视图却不会刷新,因为没有触发事件
      

  2.   

    不要用attr()设置checked属性,应该用prop()设置

    id.prop("checked",true)
      

  3.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <script type="text/javascript" src="Common/Script/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
            function allCheckbox(o)
            {
                $(".chkbox").attr("checked", o.checked);
            }
        </script>
    </head>
    <body>
    <input type="checkbox" class="chkbox" />
    <input type="checkbox" class="chkbox" />
    <input type="checkbox"  onclick="allCheckbox(this)"/>
    </body>
    </html>
    精简成这样了 还是不行 难道是jq的bug?
      

  4.   

    楼上 谢谢了 亲测必须给分 可能是jquery版本的 问题 我试试其他版本的吧