使用jquery检查/取消选中复选框列表

使用jquery检查/取消选中复选框列表,jquery,Jquery,我在网上看到的大多数示例都有一个代码段,其中使用了两个复选框,一个用于一个复选框(全部),第二个是复选框列表。在myy的例子中,我只有一个绑定到datasource的复选框列表,例如我的datasource列表选项是(All、apple、orange、red、blue),我使它的大部分工作正常,除了当所有内容都未选中时,我选中最后一个项目,例如blue,它检查All选项。所以不能正常工作。id是列表中“所有”项的id <asp:Content ID="Content2" ContentPl

我在网上看到的大多数示例都有一个代码段,其中使用了两个复选框,一个用于一个复选框(全部),第二个是复选框列表。在myy的例子中,我只有一个绑定到datasource的复选框列表,例如我的datasource列表选项是(All、apple、orange、red、blue),我使它的大部分工作正常,除了当所有内容都未选中时,我选中最后一个项目,例如blue,它检查All选项。所以不能正常工作。id是列表中“所有”项的id

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
 $(document).ready(function () {
     var id = "#<%=cbOptions.ClientID %>_0";
     var checkboxlistid = "#<%= cbOptions.ClientID %>";
     $(id).click(function () {
         $("#<%= cbOptions.ClientID %> input:checkbox").attr('checked', this.checked);
     });
     $(checkboxlistid +  " input:checkbox").click(function () {
         if ($(checkboxlistid).attr('value') != 0) {
             if ($(id).attr('checked') == true && this.checked == false) {
                 $(id).attr('checked', false);
             }
             else {
                 if ($(id).attr('checked') == true && this.checked == true)
                     CheckSelectAll();
             }

         }
     });
     function CheckSelectAll() {
         var flag = true;
         $(checkboxlistid + " input:checkbox").each(function () {
             if ($(checkboxlistid).attr('value') != 0) {
                 if (this.checked == false) {
                     flag = false;
                 }
                 else {
                     if ($(id).attr('checked') == true && this.checked == false) {
                         flag = false;
                     }
                     else {
                         flag = true;
                     }
                 }
             }
         });

         $(id).attr('checked', flag);
     }
      });    
         </script>
                <asp:CheckBoxList runat="server" ID="cbOptions" >
                </asp:CheckBoxList>
        </asp:Content>

$(文档).ready(函数(){
变量id=“##u 0”;
var checkboxlistid=“#”;
$(id)。单击(函数(){
$(“#输入:复选框”).attr('checked',this.checked);
});
$(checkboxlistid+“输入:复选框”)。单击(函数(){
if($(checkboxlistid).attr('value')!=0){
if($(id).attr('checked')==true&&this.checked==false){
$(id).attr('checked',false);
}
否则{
if($(id).attr('checked')==true&&this.checked==true)
选中SelectAll();
}
}
});
函数CheckSelectAll(){
var标志=真;
$(checkboxlistid+“输入:复选框”)。每个(函数(){
if($(checkboxlistid).attr('value')!=0){
如果(this.checked==false){
flag=false;
}
否则{
if($(id).attr('checked')==true&&this.checked==false){
flag=false;
}
否则{
flag=true;
}
}
}
});
$(id).attr('checked',标志);
}
});    

尝试将此代码作为设置检查属性,而不是分别使用true和false use checked和“”。。除此之外,您不能对所有复选框使用相同的id。id是唯一的。。如果选中“对所有人使用相同id”复选框,则该复选框将根本不起作用。如果是这样,则将其作为类名并使用
$(.classname)
选择器

function CheckSelectAll() {
             var flag = "checked";
             $(checkboxlistid + " input:checkbox").each(function () {
                 if ($(checkboxlistid).attr('value') != 0) {
                     if (this.checked == false) {
                         flag = '';
                     }
                     else {
                         if ($(id).attr('checked') == true && this.checked == false) {
                             flag = '';
                         }
                         else {
                             flag = "checked";
                         }
                     }
                 }
             });

             $(id).attr('checked', flag);
         }
          });  

$(文档).ready(函数(){
变量id=“##u 0”;
var checkboxlistid=“#”;
$(id)。单击(函数(){
$(“#输入:复选框”).attr('checked',this.checked);
});
$(checkboxlistid+“输入:复选框”)。单击(函数(){
if($(id).attr('checked')==true&&this.checked==false){
$(id).attr('checked',false);
}
其他的
选中SelectAll();
});
函数CheckSelectAll(){
$(checkboxlistid+“输入:复选框”)。每个(函数(){
var checkedcount=$(checkboxlistid+“输入[type=checkbox]:选中”)。长度;
var checkcondition=$(checkboxlistid+“输入[type=checkbox]:”)。长度-1
如果(checkedcount>=checkcondition)
$(id).attr('checked',true);
其他的
$(id).attr('checked',false);
});   
}
});    

提供有关其他脚本和标记的更多信息。我创建了一个asp.net v2.0网站,复制了你所有的脚本和标记,并手动将列表项添加到复选框列表中,蓝色只勾选蓝色,只有所有勾选全部。你能用纯html/js提供代码吗?你的html中必须有
id
冲突;通过jQuery搜索这个
“选中/取消选中所有复选框”
,你会得到很多结果。好的,我编辑了代码,这是所有的内容。我做了一个搜索,从网络上得到了这个,并试图调整它,我用javascript做得很好,但jquery语法有时会让我感到困惑..我只是想少编写代码,但最终得到的代码比javascript多。嗨,谢谢你的回复我尝试了你的函数,但它不起作用,我能够让它工作使用多少检查计数,我会张贴完整的答案。
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var id = "#<%=cbOptions.ClientID %>_0";
            var checkboxlistid = "#<%= cbOptions.ClientID %>";
            $(id).click(function () {
                $("#<%= cbOptions.ClientID %> input:checkbox").attr('checked', this.checked);
            });
            $(checkboxlistid + " input:checkbox").click(function () {
            if ($(id).attr('checked') == true && this.checked == false) {
                $(id).attr('checked', false);
            }
            else 
                CheckSelectAll();
            });
            function CheckSelectAll() {
                $(checkboxlistid + " input:checkbox").each(function () {
                    var checkedcount = $(checkboxlistid + " input[type=checkbox]:checked").length;
                var checkcondition = $(checkboxlistid + " input[type=checkbox]:").length - 1
                if (checkedcount >= checkcondition)
                    $(id).attr('checked', true);
                else
                    $(id).attr('checked', false);
                });   
            }
        });    
         </script>
                <asp:CheckBoxList runat="server" ID="cbOptions" >
                </asp:CheckBoxList>
        </asp:Content>