1、效果图如下:

2、源码如下:
html部分:
js部分:
- /**
- * Created by Administrator on 2019/5/24.
- */
- $(function () {
- //全局的checkbox选中和未选中的样式
- var $allCheckbox = $('input[type="checkbox"]'), //全局的全部checkbox
- $wholeChexbox = $('.whole_check'),
- $cartBox = $('.cartBox'), //每个商铺盒子
- $shopCheckbox = $('.shopChoice'), //每个商铺的checkbox
- $sonCheckBox = $('.son_check'); //每个商铺下的商品的checkbox
- $allCheckbox.click(function () {
- if ($(this).is(':checked')) {
- $(this).next('label').addClass('mark');
- } else {
- $(this).next('label').removeClass('mark')
- }
- });
- //===============================================全局全选与单个商品的关系================================
- $wholeChexbox.click(function () {
- var $checkboxs = $cartBox.find('input[type="checkbox"]');
- if ($(this).is(':checked')) {
- $checkboxs.prop("checked", true);
- $checkboxs.next('label').addClass('mark');
- } else {
- $checkboxs.prop("checked", false);
- $checkboxs.next('label').removeClass('mark');
- }
- totalMoney();
- });
- $sonCheckBox.each(function () {
- $(this).click(function () {
- if ($(this).is(':checked')) {
- //判断:所有单个商品是否勾选
- var len = $sonCheckBox.length;
- var num = 0;
- $sonCheckBox.each(function () {
- if ($(this).is(':checked')) {
- num++;
- }
- });
- if (num == len) {
- $wholeChexbox.prop("checked", true);
- $wholeChexbox.next('label').addClass('mark');
- }
- } else {
- //单个商品取消勾选,全局全选取消勾选
- $wholeChexbox.prop("checked", false);
- $wholeChexbox.next('label').removeClass('mark');
- }
- })
- })
- //=======================================每个店铺checkbox与全选checkbox的关系/每个店铺与其下商品样式的变化===================================================
-
- //店铺有一个未选中,全局全选按钮取消对勾,若店铺全选中,则全局全选按钮打对勾。
- $shopCheckbox.each(function () {
- $(this).click(function () {
- if ($(this).is(':checked')) {
- //判断:店铺全选中,则全局全选按钮打对勾。
- var len = $shopCheckbox.length;
- var num = 0;
- $shopCheckbox.each(function () {
- if ($(this).is(':checked')) {
- num++;
- }
- });
- if (num == len) {
- $wholeChexbox.prop("checked", true);
- $wholeChexbox.next('label').addClass('mark');
- }
- //店铺下的checkbox选中状态
- $(this).parents('.cartBox').find('.son_check').prop("checked", true);
- $(this).parents('.cartBox').find('.son_check').next('label').addClass('mark');
- } else {
- //否则,全局全选按钮取消对勾
- $wholeChexbox.prop("checked", false);
- $wholeChexbox.next('label').removeClass('mark');
- //店铺下的checkbox选中状态
- $(this).parents('.cartBox').find('.son_check').prop("checked", false);
- $(this).parents('.cartBox').find('.son_check').next('label').removeClass('mark');
- }
- totalMoney();
- });
- });
- //========================================每个店铺checkbox与其下商品的checkbox的关系======================================================
-
- //店铺$sonChecks有一个未选中,店铺全选按钮取消选中,若全都选中,则全选打对勾
- $cartBox.each(function () {
- var $this = $(this);
- var $sonChecks = $this.find('.son_check');
- $sonChecks.each(function () {
- $(this).click(function () {
- if ($(this).is(':checked')) {
- //判断:如果所有的$sonChecks都选中则店铺全选打对勾!
- var len = $sonChecks.length;
- var num = 0;
- $sonChecks.each(function () {
- if ($(this).is(':checked')) {
- num++;
- }
- });
- if (num == len) {
- $(this).parents('.cartBox').find('.shopChoice').prop("checked", true);
- $(this).parents('.cartBox').find('.shopChoice').next('label').addClass('mark');
- }
- } else {
- //否则,店铺全选取消
- $(this).parents('.cartBox').find('.shopChoice').prop("checked", false);
- $(this).parents('.cartBox').find('.shopChoice').next('label').removeClass('mark');
- }
- totalMoney();
- });
- });
- });
- //=================================================商品数量==============================================
- var $plus = $('.plus'),
- $reduce = $('.reduce'),
- $all_sum = $('.sum');
- $plus.click(function () {
- var $inputVal = $(this).prev('input'),
- $count = parseInt($inputVal.val())+1,
- $obj = $(this).parents('.amount_box').find('.reduce'),
- $priceTotalObj = $(this).parents('.order_lists').find('.sum_price'),
- $price = $(this).parents('.order_lists').find('.price').html(), //单价
- $priceTotal = $count*parseInt($price.substring(1));
- $inputVal.val($count);
- $priceTotalObj.html('¥'+$priceTotal);
- if($inputVal.val()>1 && $obj.hasClass('reSty')){
- $obj.removeClass('reSty');
- }
- totalMoney();
- });
- $reduce.click(function () {
- var $inputVal = $(this).next('input'),
- $count = parseInt($inputVal.val())-1,
- $priceTotalObj = $(this).parents('.order_lists').find('.sum_price'),
- $price = $(this).parents('.order_lists').find('.price').html(), //单价
- $priceTotal = $count*parseInt($price.substring(1));
- if($inputVal.val()>1){
- $inputVal.val($count);
- $priceTotalObj.html('¥'+$priceTotal);
- }
- if($inputVal.val()==1 && !$(this).hasClass('reSty')){
- $(this).addClass('reSty');
- }
- totalMoney();
- });
- $all_sum.keyup(function () {
- var $count = 0,
- $priceTotalObj = $(this).parents('.order_lists').find('.sum_price'),
- $price = $(this).parents('.order_lists').find('.price').html(), //单价
- $priceTotal = 0;
- if($(this).val()==''){
- $(this).val('1');
- }
- $(this).val($(this).val().replace(/\D|^0/g,''));
- $count = $(this).val();
- $priceTotal = $count*parseInt($price.substring(1));
- $(this).attr('value',$count);
- $priceTotalObj.html('¥'+$priceTotal);
- totalMoney();
- })
- //======================================移除商品========================================
-
- var $order_lists = null;
- var $order_content = '';
- $('.delBtn').click(function () {
- $order_lists = $(this).parents('.order_lists');
- $order_content = $order_lists.parents('.order_content');
- $('.model_bg').fadeIn(300);
- $('.my_model').fadeIn(300);
- });
- //关闭模态框
- $('.closeModel').click(function () {
- closeM();
- });
- $('.dialog-close').click(function () {
- closeM();
- });
- function closeM() {
- $('.model_bg').fadeOut(300);
- $('.my_model').fadeOut(300);
- }
- //确定按钮,移除商品
- $('.dialog-sure').click(function () {
- $order_lists.remove();
- if($order_content.html().trim() == null || $order_content.html().trim().length == 0){
- $order_content.parents('.cartBox').remove();
- }
- closeM();
- $sonCheckBox = $('.son_check');
- totalMoney();
- })
- //======================================总计==========================================
-
- function totalMoney() {
- var total_money = 0;
- var total_count = 0;
- var calBtn = $('.calBtn a');
- $sonCheckBox.each(function () {
- if ($(this).is(':checked')) {
- var goods = parseInt($(this).parents('.order_lists').find('.sum_price').html().substring(1));
- var num = parseInt($(this).parents('.order_lists').find('.sum').val());
- total_money += goods;
- total_count += num;
- }
- });
- $('.total_text').html('¥'+total_money);
- $('.piece_num').html(total_count);
- $('#order_num').html(total_count);
- // console.log(total_money,total_count);
-
- if(total_money!=0 && total_count!=0){
- if(!calBtn.hasClass('btn_sty')){
- calBtn.addClass('btn_sty');
- }
- }else{
- if(calBtn.hasClass('btn_sty')){
- calBtn.removeClass('btn_sty');
- }
- }
- }
- });
css部分:
两个文件,carts.css 和 reset.css
- /* 清除内外边距 */
- body, h1, h2, h3, h4, h5, h6, hr, p, blockquote,
- /* structural elements 结构元素 */
- dl, dt, dd, ul, ol, li,
- /* list elements 列表元素 */
- pre,
- /* text formatting elements 文本格式元素 */
- fieldset, lengend, button, input, textarea,
- /* form elements 表单元素 */
- th, td {
- /* table elements 表格元素 */
- margin: 0;
- padding: 0;
- }
- /* 设置默认字体 */
- body, button, input, select, textarea {
- /* for ie */
- /*font: 12px/1 Tahoma, Helvetica, Arial, "宋体", sans-serif;*/
- font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
- /* 用 ascii 字符表示,使得在任何编码下都无问题 */
- }
- h1 {
- font-size: 18px;
- /* 18px / 12px = 1.5 */
- }
- h2 {
- font-size: 16px;
- }
- h3 {
- font-size: 14px;
- }
- h4, h5, h6 {
- font-size: 100%;
- }
- address, cite, dfn, em, var {
- font-style: normal;
- }
- /* 将斜体扶正 */
- code, kbd, pre, samp, tt {
- font-family: "Courier New", Courier, monospace;
- }
- /* 统一等宽字体 */
- small {
- font-size: 12px;
- }
- /* 小于 12px 的中文很难阅读,让 small 正常化 */
- /* 重置列表元素 */
- ul, ol {
- list-style: none;
- }
- /* 重置文本格式元素 */
- a {
- text-decoration: none;
- color: #000;
- }
- /*a:hover { text-decoration: underline; }*/
- abbr[title], acronym[title] {
- /* 注:1.ie6 不支持 abbr; 2.这里用了属性选择符,ie6 下无效果 */
- border-bottom: 1px dotted;
- cursor: help;
- }
- q:before, q:after {
- content: '';
- }
- /* 重置表单元素 */
- legend {
- color: #000;
- }
- /* for ie6 */
- fieldset, img {
- border: none;
- }
- /* img 搭车:让链接里的 img 无边框 */
- /* 注:optgroup 无法扶正 */
- button, input, select, textarea {
- font-size: 100%;
- /* 使得表单元素在 ie 下能继承字体大小 */
- }
- /* 重置表格元素 */
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
- /* 重置 hr */
- hr {
- border: none;
- height: 1px;
- }
- /* 让非ie浏览器默认也显示垂直滚动条,防止因滚动条引起的闪烁 */
- html {
- overflow-y: scroll;
- }
- /* 浮动 */
- .fl {
- float: left
- }
- .fr {
- float: right
- }
- /* 清除浮动 */
- .clearfix:after {
- content: " ";
- display: block;
- clear: both;
- visibility: hidden;
- }
cart.css部分:
源码地址:
链接:https://pan.baidu.com/s/1HV1zk3QsJti8yyJ1gNBWnQ 提取码:skhx
如链接过期了私信或留言,看到会第一时间回复
干货分享,记得留个赞再走哦~