原生js、jQuery、小程序实现购物车功能


购物车功能在前端开发中经常会遇到,所以小编我在这里为大家提供了元素js、jQuery和小程序的写法,可以直接复制代码看效果哦!PS:记得更换自己的图片。

点击代码详情查看所有代码!

原生js和jQuery

原生js和jQuery的HTML代码

<div class="container">
	<section class="all_check_wrap">
		 <label for="all_check" class="checkbox_label">全选</label>
		 <input id="all_check"  type="checkbox">
	</section>
	<section class="img_check_wrap">
		<div class="item_wrap">
			<img src="../images/dingdong1.jpg" alt="">
			<input class="item_check" type="checkbox" name="" id="check0" value="" />
		</div>
		<div class="item_wrap">
			<img src="../images/dingdong2.jpg" alt="">
			<input class="item_check" type="checkbox" name="" id="check1" value="" />
		</div>
		<div class="item_wrap">
			<img src="../images/dingdong3.jpg" alt="">
			<input class="item_check" type="checkbox" name="" id="check2" value="" />
		</div>
	</section>
</div>

原生js代码

// 全选
var all_check=document.getElementById('all_check');
// 所以单选
var item_check_arr=document.getElementsByClassName('item_check');
// 全选绑定点击事件
all_check.addEventListener('click',check_fun);

// 每个选择绑定点击事件
for(var i=0;i<item_check_arr.length;i++){
	item_check_arr[i].addEventListener('click',check_fun);
}

// 选择函数
function check_fun(){
	if(all_check===this){//点击的是全选
		for(var i=0;i<item_check_arr.length;i++){
			item_check_arr[i].checked=all_check.checked;
		}
		return ;
	}else{//点击的是每个选择input
		for(var i=0;i<item_check_arr.length;i++){
			var check_arr=document.getElementById('check'+i).checked;
			if(!check_arr){//只要有一个没选中则全选不选中
				all_check.checked=false;
				return ;
			}else{
				all_check.checked=true;
			}
			
		}
	}
}

jquery代码

// 全选
var all_check=$('#all_check');
// 所以单选
var item_check_arr=$('.item_check');
// 全选绑定点击事件
all_check.bind('click',check_fun);

// 每个选择绑定点击事件
for(var i=0;i<item_check_arr.length;i++){
	$('#check'+i).bind('click',check_fun);
}

// 选择函数
function check_fun(){
	if(all_check[0]===this){//点击的是全选
		for(var i=0;i<item_check_arr.length;i++){
			$("#check"+i).prop('checked',all_check.prop('checked'));
			// $("#check"+i).prop('checked',all_check.is(':checked'));
		}
		return ;
	}else{//点击的是每个选择input
		for(var i=0;i<item_check_arr.length;i++){
			var check_arr=$("#check"+i).prop('checked');
			if(!check_arr){//只要有一个没选中则全选不选中
				all_check.prop('checked',false);
				return ;
			}else{
				all_check.prop('checked',true);
			}
		}
	}
}

小程序

wxml代码

<view class="container">
  <view class="all_check_wrap">
    <text for="all_check" class="checkbox_text">全选</text>
    <checkbox-group bindchange='all_check_change'>
      <checkbox checked="{{all_check_arr[0]}}"></checkbox>
    </checkbox-group>
  </view>
  <view class="image_check_wrap">
    <checkbox-group bindchange='item_check_change' wx:for="{{check_arr}}" wx:for-index="index" wx:for-item="item" wx:key='index' data-index="{{index}}" class="item_wrap">
      <image mode='aspectFit' src="../../images/dingdong1.jpg" alt=""></image>
      <checkbox data-index="{{index}}" checked="{{item}}"></checkbox>
    </checkbox-group>

  </view>
</view>

js代码

//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    all_check_arr:[false],
    check_arr:[false,false,false]
  },
  
  onLoad: function () {
    
  },
  // 点击全选复选框
  all_check_change(e){
    let check_arr_length = this.data.check_arr.length;
    let check_arr = new Array(check_arr_length).fill(false);
    if (e.detail.value[0]==""){
      check_arr = new Array(check_arr_length).fill(true);
    }
    this.setData({
      check_arr: check_arr
    })
  },
  // 点击每个复选框
  item_check_change(e){
    let index = e.currentTarget.dataset.index;
    let check_arr = this.data.check_arr;
    let all_check_arr = this.data.all_check_arr;
    if (e.detail.value[0] == ""){
      check_arr[index] = true; // 设置选择的复选框的checked值
    }else{
      check_arr[index] = false; // 设置选择的复选框的checked值
      all_check_arr = [false];//只要有一个复选框没选中,则全选不选中
    }
    if (check_arr.indexOf(false)==-1){//复选框全部选中,全选复选框选中
      all_check_arr= [true];
    }
    this.setData({
      check_arr: check_arr,
      all_check_arr: all_check_arr
    })
  }
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值