如图所示,第一个已是checked="checked"======================================上边是一个全选按钮,我试图点这个复选框来实现下边复选框的全选/全不选但是效果不佳效果呈现为:第一次点这个复选框,下边所有的都被勾选.  再点这个复选框,下边所有的都被取消勾选. 之后再点这个复选框无论多少次,只有属性的变化没有勾选的显示代码如下:        if(document.getElementById("checkAll").checked){
$("input[name='jinjian']").attr("checked","checked");
}else{
$("input[name='jinjian']").prop("checked",false).removeAttr("checked");
}
或者如下:(经过各种尝试,下边这是最早的写法,依然一样的问题)$("input[name='jinjian']").attr("checked",document.getElementById("checkAll").checked);
====================================
而当我写作$("input[name='jinjian']").attr("checked",$(this).attr("checked"));则完全不起效,第一次都无法全选/全不选.=======================================环境是ThinkPHP jquery1.10.2jQuerycheckboxchecked全选全不选

解决方案 »

  1.   

    这个问题别人好像遇到过,但我从未遇到过
    试试
    $("input[name='jinjian']").attr('checked',true);

    $("input[name='jinjian']")[0].checked = 'cheched';
      

  2.   

    $("input[name='jinjian']")[0].checked = 'checked';
      

  3.   

    Jquery 1.6+
    你用的jquery版本使用prop比较好if($("#checkAll").prop("checked") == true){
            $("input[name='jinjian']").prop("checked",true);
        }else{
            $("input[name='jinjian']").prop("checked",false);
        }
      

  4.   

     $(全选).onclick(
    function(){$('input[type=checkbox]').attr('checked', $(全选).attr('checked'));} )
      

  5.   

    $("input[name='jinjian']")[0].checked = 'checked';感谢回复,按照你提供的这种思路,给所有的复选框一个个加checked="checked" 是可以的,成功了
    代码如下if(document.getElementById("checkAll").checked){
    $.each($("input[name='jinjian']"),function(i,n){
    $(n)[0].checked="checked";
    });
        }else{
            $("input[name='jinjian']").removeAttr("checked");
        }但是我还是想问一个 为什么.为什么之前的写法不行,是jquery的问题吗?
      

  6.   

    <!doctype html>
    <html>
    <head>
    <meta charset="gb2312">
    <title>无标题文档</title>
    <script type="text/javascript" src="jquery1.7.js"></script>
    <script type="text/javascript">$(document).ready(function(e) {
    $("#quanxuan").click(function(e) {
    if ($(this).attr("checked")=="checked"){
    $("input[name='jinjian']").attr("checked",true)
    }
    else{
    $("input[name='jinjian']").removeAttr("checked")
    }
        });
    });</script>
    </head><body>
    <table width="400" border="1" align="center" id="table1">
      <tr>
        <td><input type="checkbox" name="quanxuan" id="quanxuan"></td>
        <td>a</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian"></td>
        <td>1</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian"></td>
        <td>2</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian" ></td>
        <td>3</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian" ></td>
        <td>4</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian"></td>
        <td>5</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian" ></td>
        <td>6</td>
      </tr>
      <tr>
        <td><input type="checkbox" name="jinjian"></td>
        <td>7</td>
      </tr>
    </table>
    </body>
    </html>
      

  7.   


    这样写也是可以的,没有出现主楼的问题
    但是jquery手册上说的是  IE6下 要使用prop 
    而我用的是火狐还是希望能知道,为什么会出现主楼的问题.
      

  8.   

    $(document).ready(function(e) {
        $("#quanxuan").click(function(e) {
           $("input[name='jinjian']").attr("checked",this.checked);
        });
    });
      

  9.   


    这样写也是可以的,没有出现主楼的问题
    但是jquery手册上说的是  IE6下 要使用prop 
    而我用的是火狐还是希望能知道,为什么会出现主楼的问题.
    因为checkbox在不同浏览器以及不同js版本下面选中的值会不一样
    在attr里面
    有时候是 true false
    有时候是 "checked" ""
      

  10.   

    .prop("checked",false)  试着把false改为""试试,如下:
    .prop("checked","")
      

  11.   

    if ($(this).attr("checked")=="checked") 你这里写的有错误啊 和环境没关吧
    if ($(this).attr("checked"))这样写