jQuery实用案例之全选反选操作

                                     今天带来jQuery的第一个案例:全选反选

三个我觉得比较要注意的点:

    ①.实现反选功能的时候,先遍历每一个checkbox,然后进行状态反转this.checked = !this.checked;

<script>
//3. 点击'反选': 改变所有爱好的勾选状态
        $("#checkedRevBtn").click(function () {
            $items.each(function () {
                this.checked = !this.checked;
            })
            $("#checkedAllBox").prop("checked", $items.filter(':not(:checked)').length===0);
        })
</script>

  ②注意this.checked这里的this是一个dom元素原生js中获取checkedbox的状态为:dom元素.checked

     注意$(this)是一个jQuery对象 jQuery中获取checkedbox的状态为: $("选择器").prop("checked")

    

<script> 
   // 4. 点击'全选/全不选': 选中所有爱好, 或者全不选中
        $checkedAllBox.click(function () {
            $items.prop("checked", this.checked);
            $items.prop("checked", $(this).prop("checked"));
            console.log(this);
            console.log($(this));
            console.log(this.checked);
            console.log($checkedAllBox.prop("checked"));
        })
</script>

 让我们看下控制台this、$(this)、this.checked、$(checkedAllBox).prop("checked")分别是什么,需要点击全选按钮

可以看到this是dom元素,$(this)是jQuery对象,原生js和jQuery获取checkedbox的方法等效

filter过滤器:这个案例中使用过滤器处理没有被选中的复选框

<script>
        // 5. 点击某个爱好时, 必要时更新'全选/全不选'的选中状态
        $items.click(function () {
            $("#checkedAllBox").prop("checked", $items.filter(':not(:checked)').length === 0);
        })
</script>

总案例如下: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>全选全不选反选</title>
</head>
<body>
<form>
    你爱好的运动是?<input type="checkbox" id="checkedAllBox"/>全选/全不选

    <br/>
    <input type="checkbox" name="items" value="足球"/>足球
    <input type="checkbox" name="items" value="篮球"/>篮球
    <input type="checkbox" name="items" value="羽毛球"/>羽毛球
    <input type="checkbox" name="items" value="乒乓球"/>乒乓球
    <br/>
    <input type="button" id="checkedAllBtn" value="全 选"/>
    <input type="button" id="checkedNoBtn" value="全不选"/>
    <input type="button" id="checkedRevBtn" value="反 选"/>
</form>

<script src="js/jquery-3.4.1.min.js"></script>
<script>
    $(function () {
        /*
  功能说明:
  1. 点击'全选': 选中所有爱好
  2. 点击'全不选': 所有爱好都不勾选
  3. 点击'反选': 改变所有爱好的勾选状态
  4. 点击'全选/全不选': 选中所有爱好, 或者全不选中
  5. 点击某个爱好时, 必要时更新'全选/全不选'的选中状态
  */
        var $checkedAllBox = $('#checkedAllBox')
        var $items = $(':checkbox[name=items]')
        //1.点击'全选': 选中所有爱好
        $("#checkedAllBtn").click(function () {
            $checkedAllBox.prop("checked", true);
            $items.prop("checked", true);
        })
        //2. 点击'全不选': 所有爱好都不勾选
        $("#checkedNoBtn").click(function () {
            $checkedAllBox.prop("checked", false);
            $items.prop("checked", false);
        })
        //3. 点击'反选': 改变所有爱好的勾选状态
        $("#checkedRevBtn").click(function () {
            $items.each(function () {
                this.checked = !this.checked;
            })
            $("#checkedAllBox").prop("checked", $items.filter(':not(:checked)').length===0);
        })
        // 4. 点击'全选/全不选': 选中所有爱好, 或者全不选中
        $checkedAllBox.click(function () {
            $items.prop("checked", this.checked);
            console.log(this);
            console.log(this.checked);
            console.log($checkedAllBox.prop("checked"));
        })
        // 5. 点击某个爱好时, 必要时更新'全选/全不选'的选中状态
        $items.click(function () {
            $("#checkedAllBox").prop("checked", $items.filter(':not(:checked)').length === 0);
        })
    })
</script>
</body>
</html>

总结:这是一个很实用的案例,比如菜单选项,京东购物车选项,第一个案例,继续加油

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值