我们的复选框有时候会失效,必须点一遍全选,才能正常使用解决方法

博主在开发电商App购物车页面时遇到复选框功能失效的问题,当点击全选时,商品数量的加减器也会被选中。通过分析代码,发现使用了`.goods input`的选择器导致了这个问题。博主建议将选择器改为`.goods input:nth-child(1)`,以确保只选择到复选框,避免影响商品数量输入。这一解决方案能帮助开发者解决类似问题。
摘要由CSDN通过智能技术生成

标题
我们的复选框有时候会失效,必须点一遍全选,才能正常使用

这两天老师让我们做一个电商App,其中在购物车页面当中,有一个比较重要的知识点,那就是复选框。

大家可以先看一下我的代码:

<div class="mid-main">
[//]: # (第一个商品:)
        <div class="goods">
            <label for="one">
           <input type="checkbox" id="one">
        </label>
            <div class="pic"></div>
            <div class="zi">
                <h5>商品名称</h5>
                <span class="glide">商品属性规格</span>
                <h5 style="color: red;">¥45</h5>
            </div>
            <div class="count">
                <span>-</span>
                <input type="text" value="10">
                <span>+</span>
            </div>
            <img src="./image/购物车下划线.png" alt="" class="dixian">
        </div>
[//]: # (第二个商品:)
        <div class="goods">
            <label for="two">
           <input type="checkbox" id="two">
        </label>
            <div class="pic"></div>
            <div class="zi">
                <h5>商品名称</h5>
                <span class="glide">商品属性规格</span>
                <h5 style="color: red;">¥45</h5>
            </div>
            <div class="count">
                <span>-</span>
                <input type="text" value="10">
                <span>+</span>
            </div>
            <img src="./image/购物车下划线.png" alt="" class="dixian">
        </div>
         </div>
.....还有几个就不一 一写了,嘻嘻嘻
  <div class="foot-bot">
        <label for="eight">
        <input type="checkbox" class="all" id="eight">
       <h5>已选(2)</h5>
    </label>
       <h6>合计¥<em style="color: red;">168.00</em></h6>
       <a href="./second.html"><span>去结算</span></a>
    </div>

下面是我的jq 代码:

  $(".goods input").change(function(){
      var allChecked=true;
      $(".goods input").each(function(){
         $(this).prop('checked')
         if($(this).prop("checked")==false){
          allChecked=false;
      }
      })
      $(".all").prop("checked",allChecked)
  })
$(".all").change(function(){
    var status=$(this).prop('checked')
    $(".goods input:nth-child(1)").prop("checked",status)
})
聪明的大家可以看出什么问题吗?没错,就是我们的.goods下边有两个input 第一个是我们想要的复选框,第二个也是购物车中常见的商品数量的加减器

在这里插入图片描述

这样就会导致我们在选中的时候不止是选中我们想要的复选框,还会选中我们的商品数量的加减器。最终出现的效果就是我们把商品前边的复选框全点之后也,全选前边那个复选框也不会被选中,如下:

在这里插入图片描述

所以我们要想办法只选中复选框那个input 这就涉及到了选择器。我使用的是nth-child选择器。把:.goods input改成.goods input:nth-child(1)即可。
希望可以解决大家的一些问题,没事的话可以加个关注,交个朋友呀!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值