zoukankan      html  css  js  c++  java
  • 使用JQuery做一组复选框的功能。

    之前做过复选框的功能,奈何笔记丢失,害的我又鼓捣了一番。。。还是博客园做笔记比较好。

    假设现在有一个表格,每一行都有一个复选框按钮。在表头还有一个全选的复选框按钮。

    ①、当点击一个全选按钮时,下面的同组的复选框都被选中,再点击时取消全选,下面同组的所有复选框都取消。

    ②、当下面的所有选项都被选中时上面的全选框自动变为选中状态。当下面有一个选项的处于未选中状态时,上面的全选按钮自动变为未选中状态。

    下面是表格的代码

    <table border="1" cellpadding="10" cellspacing="0">
            <tr>
                <td><input type="checkbox" name="test1" id="quanxuan" />全选</td>
                <td>姓名</td>
                <td>省份</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="test1" id="yi" class="item" /></td>
                <td>张三</td>
                <td>福建</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="test1" id="er" class="item" /></td>
                <td>李四</td>
                <td>广东</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="test1" id="san" class="item" /></td>
                <td>王五</td>
                <td>江苏</td>
            </tr>
    
        </table>

    下面是代码形成的表格

    一、实现点击全选按钮时,下面的选项全被选中,再次点击,取消全选时,下面的选项全部处于未选中状态。

    <script type="text/javascript">
        $(function(){
            $("#quanxuan").click(function(){
                var isCheck = $(this).prop("checked");
                if(isCheck){
                    alert("全选");
                    var items = $(".item");
                    
                    for(var i = 0; i < items.length; i++){
                        $(items[i]).attr("checked",true);
                    }
                }else{
                    alert("取消全选");        
                    
                    var items = $(".item");
                    for(var i = 0; i < items.length; i++){
                        $(items[i]).attr("checked",false);
                    }
                    
                }
            });
        })
    </script>

    在这个过程犯了一个低级错误。for循环里面的代码:

    $(items[i]).attr("checked",false);//正确的

    被我写成了

    $(items[i].attr("checked",false));//错误的

    搞了半天没发现错误。。。。。JavaScript真的很讨厌。写js代码总会有一股煞气堵在胸口的感觉。

    二、现在添加功能:当下面的所有选项都被选中时上面的全选框自动变为选中状态。当下面有一个选项的处于未选中状态时,上面的全选按钮自动变为未选中状态。

    下面是完整的js代码:

    <script type="text/javascript">
        $(function(){
            $("#quanxuan").click(function(){
                var isCheck = $(this).prop("checked");
                if(isCheck){
                    var items = $(".item");
                    
                    for(var i = 0; i < items.length; i++){
                        $(items[i]).attr("checked",true);
                    }
                }else{
                    
                    var items = $(".item");
                    for(var i = 0; i < items.length; i++){
                        $(items[i]).attr("checked",false);
                    }
                    
                }
            });
            $(".item").click(function(){
                //检查是不是所有的选项都被选中了,如果是,将全选按钮设置为选中状态。否则设为未选中状态。
                var items = $(".item");
                var flag = true;
                for(var i = 0; i < items.length; i++){
                    var isChecked = $(items[i]).prop("checked");
                    if(!isChecked){
                        //将flag设为false,表示未全选。
                        flag = false;
                    }
                }
                if(flag){
                    $("#quanxuan").attr("checked", true);
                }else{
                    $("#quanxuan").attr("checked", false);
                }
            });
        })
    </script>
  • 相关阅读:
    url参数的获取
    ajax变量作用域的问题
    滚动条自适应宽度的问题
    js发送验证码(倒计时)
    字符串
    值类型和引用类型
    面向对象
    进程
    UI事件
    鼠标跟随
  • 原文地址:https://www.cnblogs.com/GooPolaris/p/7920426.html
Copyright © 2011-2022 走看看