码迷,mamicode.com
首页 > 其他好文 > 详细

基于JQ的多选/全选/反选

时间:2018-06-22 13:44:30      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:区别   his   box   put   UNC   ==   font   pre   TE   

<!-- author:青芒 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>多选/全选/反选</title>
</head>
<body>

    <p>中国古代十大名剑</p>
    <input type="checkbox" value="全选" id="selectAll"/>全选
    <div id="checkBoxList" class="check-all">  
        <input type="checkbox" value="轩辕"/>轩辕<br>  
        <input type="checkbox" value="湛泸"/>湛泸<br>  
        <input type="checkbox" value="赤霄"/>赤霄<br>  
        <input type="checkbox" value="太阿"/>太阿<br>  
        <input type="checkbox" value="七星龙渊"/>七星龙渊<br>  
        <input type="checkbox" value="干将"/>干将<br>  
        <input type="checkbox" value="莫邪"/>莫邪<br>  
        <input type="checkbox" value="鱼肠"/>鱼肠<br>  
        <input type="checkbox" value="纯钧"/>纯钧<br>  
        <input type="checkbox" value="承影"/>承影<br>  
    </div>  
    

    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script>
        $(function(){
            $("#selectAll").click(function(){ //全选/反选
                var checkedFlag = this.checked;
                $("#checkBoxList :checkbox").prop("checked", checkedFlag);
            }); 

            $("#checkBoxList :checkbox").click(function(){
                var length1 = $("#checkBoxList :checkbox").length; //选项个数
                var length2 = $("#checkBoxList :checkbox").filter(":checked").length; //已勾选的个数
                if(length1 === length2){
                    $("#selectAll").prop("checked", true);
                }else{
                    $("#selectAll").prop("checked", false);
                }
            })
        })
    </script>
</body>
</html>

这里需要注意 attr 和 prop 的区别,虽然两个的作用都是给标签添加属性,但是在实际使用过程中,二者对checked属性作用不同,用attr的时候只能选中/取消一次,然后就没作用了,但是prop不会有这个问题。

百度后发现:

对于一个checkbox,若未定义checked="checked",alert($.attr("checked")) 的结果是undefined。若已定义则结果是checked。attribute并不随着checkbox的状态变化而改变。
使用prop($.attr("checked"))的话输出则分别为false和true。property则随其变化而变化。
所以在修改checked属性时要使用prop()。prop()在jQuery1.6版本后新增。

基于JQ的多选/全选/反选

标签:区别   his   box   put   UNC   ==   font   pre   TE   

原文地址:https://www.cnblogs.com/muou2125/p/9212433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!