• 使用jQuery完成复选框的全选和全不选


    要完成这个效果,必然要了解jQuery中对属性操作的方法:

    • attr():设置或返回被选元素的属性值。

      • 使用方法一:$("xxx").attr("src");——返回被选元素的src属性值
      • 使用方法二:$("xxx").attr("src","test.jpg");——设置被选元素的src属性值
      • 使用方法三:$("xxx").attr({src:"test.jpg", alt:"Test Image"});——为被选元素设置src和alt属性
    • removeAttr():从每一个匹配的元素中删除一个属性,即移除属性。

    • prop():与attr()方法类似,只不过它是新版本的方法。 
      • 使用方法一:$("xxx").prop("src");——返回被选元素的src属性值
      • 使用方法二:$("xxx").prop("src","test.jpg");——设置被选元素的src属性值
      • 使用方法三:$("xxx").prop({src:"test.jpg", alt:"Test Image"});——为被选元素设置src和alt属性
    • removeProp():与removeAttr()方法类似,移除属性。
    • addClass(class):为每个匹配的元素添加指定的类名,即添加某个样式。
    • removeClass(class):从所有匹配的元素中删除全部或者指定的类,即移除某个样式。

    下面按照如下步骤来使用jQuery完成对复选框的全选和全不选效果:

    1. 在页面中添加复选框
    2. 引入jQuery的js文件
    3. 编写jQuery的入口函数
    4. 点击上面的复选框,获得下面所有的复选框
    5. 修改下面所有的复选框的值

    我摘出最重要的一个html文件——【data.html】:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <link rel="stylesheet" href="../css/style.css" />
            <script type="text/javascript" src="../js/jquery-1.11.3.min.js" ></script>
            <script>
                // 表格的隔行换色
                $(function() {
                    $("tbody tr:odd").addClass("odd");
                    $("tbody tr:even").addClass("even");
                });
            </script>
        </head>
        <body>
            <table id="tab1" border="1" width="80%" align="center">
                <thead>
                <tr>
                    <th><input type="checkbox" id="selectAll" /></th>
                    <th>分类的ID</th>
                    <th>分类的名称</th>
                    <th>分类的描述</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><input type="checkbox" name="ids" /></td>
                        <td>1</td>
                        <td>手机数码</td>
                        <td>手机数码</td>
                        <td><a href="">修改</a>|<a href="">删除</a></td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="ids" /></td>
                        <td>2</td>
                        <td>电脑办公</td>
                        <td>电脑办公</td>
                        <td><a href="">修改</a>|<a href="">删除</a></td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="ids" /></td>
                        <td>3</td>
                        <td>烟酒糖茶</td>
                        <td>烟酒糖茶</td>
                        <td><a href="">修改</a>|<a href="">删除</a></td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="ids" /></td>
                        <td>4</td>
                        <td>鞋靴箱包</td>
                        <td>鞋靴箱包</td>
                        <td><a href="">修改</a>|<a href="">删除</a></td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="ids" /></td>
                        <td>5</td>
                        <td>汽车用品</td>
                        <td>汽车用品</td>
                        <td><a href="">修改</a>|<a href="">删除</a></td>
                    </tr>
                </tbody>
            </table>
        </body>
    </html>
    

      接着编写jQuery代码来完成对复选框的全选和全不选效果:

    <script>    
        // 复选框的全选和全不选
        $(function() {
            // 获得上面的复选框
            var $selectAll = $("#selectAll");
            // alert($selectAll.prop("checked")); // 返回undefined未定义
            $selectAll.click(function() {
                // alert($selectAll.prop("checked"));
                if ($selectAll.prop("checked") == true) {
                    // 上面的复选框已被选中
                    $(":checkbox[name='ids']").prop("checked", true);
                } else {
                    // 上面的复选框没被选中
                    $(":checkbox[name='ids']").prop("checked", false);
                }
            });
        });
    </script>

    细心的读者应该能看出以上代码能简化为:

    <script>    
        // 复选框的全选和全不选
        $(function() {
            $("#selectAll").click(function() {
                $(":checkbox[name='ids']").prop("checked", this.checked); // this指代的你当前选择的这个元素的JS对象
            });
        });
    </script>

    参考:

    前端简单入门第十三讲 使用JavaScript完成复选框的全选和全不选的效果

    别的代码参考:

                    $('input[name="selectall"]').click(function(){
                    //alert(this.checked);
                    if($(this).is(':checked')){
                            $('input[name="stuCheckBox"]').each(function(){
                                    //此处如果用attr,会出现第三次失效的情况
                                        $(this).prop("checked",true);
                                    });
                }else{
                        $('input[name="stuCheckBox"]').each(function(){
                                        $(this).removeAttr("checked",false);
                                    });
                                    //$(this).removeAttr("checked");
                }
                        
            });
     
                    <td><input type="checkbox" name="selectall"/></td>


    最好不要用attr方法增加属性,否则会出现第三次点击不生效的情况,用prop方法较好

     //没被选中的
    var checkedList = new Array();   
    $("input[name='id']:not(:checked)").each(function() {   
        checkedList.push($(this).val());   
    }); 


    //已选中的
    var checkedList = new Array();   
    $("input[name='id']:checked").each(function() {   
        checkedList.push($(this).val());   
    });  

     <script type="text/javascript"> $(function(a) { $("#checkAllJQuery").click(function() { //alert(this.checked); if(this.checked==true) { $("input[name='chk2']").each(function() {$(this).prop("checked",true)})//法1 //$("input[name='chk2']").each(function() {$(this).attr("checked","checked")})//法2 }else{ $("input[name='chk2']").each(function() {$(this).prop("checked",false)})//法1 //$("input[name='chk2']").each(function() {$(this).removeAttr("checked")})//法2 } }) }) </script>

     <input type="checkbox" id="checkAll" onclick="checkAll(this)">全选 <!--JavaScript方式实现全选 --> <script type="text/javascript"> function checkAll(a) { var arrayChecks = document.getElementsByName("chk"); for(var i=0;i<arrayChecks.length;i++) { arrayChecks[i].checked = a.checked; } } </script>


    自己实际用的代码:

    $("#checkAll").bind("click",function () {
                $('input[name="checkTeacher"]').each(function () {
                    $(this).prop("checked",$("#checkAll").is(":checked"));
                })
            })
  • 相关阅读:
    引用的难点:函数返回值是引用(引用当左值)
    引用的意义与本质
    引用做函数参数
    Uva
    Uva
    Uva
    暑假集训-8.06总结
    暑假集训-8.05总结
    CH1801( 括号画家)
    最大异或对
  • 原文地址:https://www.cnblogs.com/liuqifeng/p/13385023.html
Copyright © 2020-2023  润新知