目录

一、效果展示 :

二、主要功能介绍:

三、html代码:

四:css代码:

五、核心步骤:

六、jQuery代码(重点)

七、感谢


一、效果展示 :

二、主要功能介绍:

1、点击商品数量左右按钮能实现加减商品件数、当前商品后面"小计"(总价)的不断计算并变化

2、可以在"件数"input标签中自定义输入商品件数,并自动计算该商品总价。

3、当商品点击左右按钮加减件数、在输入框中自定义输入件数的时候,能在下方的总计列中显示所有商品的件数、所有商品的价格。

4、点击全选按钮能将所有商品前面的复选框选中,再点击又全不选中。

5、点击每个商品前面的复选框按钮,如果所有商品全部选中,自动将全选按钮赋值为选中状态。

6、在所有商品全部选中状态下,取消一个商品的选中状态,全选按钮自动赋值为不选中状态。

7、点击后面每个商品的"删除"按钮能删除当前商品。

8、商品选中状态下(几个或全选),点击左下方的”删除“按钮能批量删除所选商品。

9、如果当前商品前面的复选框处于选中状态,就给他添加一个类,让他的背景颜色更加突出;如果变为非选中状态,删除他刚添加的类,让其恢复到原有的背景色。

10、在商品增加、删除、修改时都能自动的在最下方列总计的  总件数 和 总价 修改

三、html代码:

这一部分不是重点,重点是学习jQuery,所以不太讲究过于精美,望各位不要介意~

这一部分,注意关注结构和类名,以便于后面的学习!

<body><div class="container w"><div class="row"><nav><ul><li>首页</li><li>服装</li><li>手机</li><li>电脑</li><li>日用</li><li>注册</li><li>登录</li></ul></nav></div><div class="row w"><div class="cart-head"><div class="select-all"><input type="checkbox" name="" id=""> 全选</div><div class="commodity">商品</div><div class="price">价格</div><div class="num">数量</div><div class="sum">小计</div><div class="operation">操作</div></div></div><!-- 商品详细模块 --><div class="row w"><div class="cart-content"><div class="item"><input type="checkbox" name="" id="checkbox"><div class="box"><img src="data:images/1.jpg" alt=""><p>月亮与六便士正版书籍 毛姆经典作品青少 世界经典文学名著书籍畅销书排行榜</p></div><div class="item-price">¥12.60</div><div class="item-num"><span class="left">-</span><input type="text" value="1" class="nums"><span class="right">+</span></div><div class="item-sum">¥12.60</div><div class="item-opration">删除</div></div><div class="item"><input type="checkbox" name="" id="checkbox"><div class="box"><img src="data:images/2.jpg" alt=""><p>月亮与六便士正版书籍 毛姆经典作品青少 世界经典文学名著书籍畅销书排行榜</p></div><div class="item-price">¥25.80</div><div class="item-num"><span class="left">-</span><input type="text" value="1" class="nums"><span class="right">+</span></div><div class="item-sum">¥25.80</div><div class="item-opration">删除</div></div><div class="item"><input type="checkbox" name="" id="checkbox"><div class="box"><img src="data:images/3.jpg" alt=""><p>月亮与六便士正版书籍 毛姆经典作品青少 世界经典文学名著书籍畅销书排行榜</p></div><div class="item-price">¥32.10</div><div class="item-num"><span class="left">-</span><input type="text" value="1" class="nums"><span class="right">+</span></div><div class="item-sum">¥32.10</div><div class="item-opration">删除</div></div><div class="item"><input type="checkbox" name="" id="checkbox"><div class="box"><img src="data:images/4.jpg" alt=""><p>月亮与六便士正版书籍 毛姆经典作品青少 世界经典文学名著书籍畅销书排行榜</p></div><div class="item-price">¥22.40</div><div class="item-num"><span class="left">-</span><input type="text" value="1" class="nums"><span class="right">+</span></div><div class="item-sum">¥22.40</div><div class="item-opration">删除</div></div></div></div><!-- 商品总计 --><div class="row w"><div class="cart-footer"><!-- 全选 --><div class="select-all"><input type="checkbox" name="" id=""><span>全选</span></div><div class="footer-total">总计</div><div class="footer-num"><span>1</span></div><div class="footer-sum">¥14.30</div><div class="footer-opration">删除</div></div></div></div></body>

四:css代码:

这一部分不是重点,自己练习写就可以~

* {margin: 0;padding: 0;}/* nav */input {outline: none;}nav {width: 1070px;height: 80px;background-color: #e9e6b8;margin-bottom: 20px;line-height: 80px;padding: 0 40px;}nav ul {width: 1100px;}nav ul li {float: left;list-style: none;width: 170px;height: 60px;font-size: 20px;}nav ul li:nth-child(6) {margin-left: 60px;}nav ul li:nth-child(6),nav ul li:nth-child(7) {width: 60px;font-size: 16px;}.current {background-color: #e0dfd7;}/* 购物车主体 */div {box-sizing: border-box;}.cart-head {width: 1070px;height: 50px;background-color: #eeeddd;padding-top: 15px;padding-left: 10px;}.cart-head div,.cart-head input {float: left;}.cart-head input[type=checkbox] {margin-right: 3px;}.commodity {margin-left: 100px;}.price {margin-left: 300px;}.num,.sum,.operation {margin-left: 100px;}/* 商品内容模块 */.cart-content {margin-top: 10px;}.cart-content .item {width: 1070px;height: 200px;border-top: 1px solid #ccc;margin-bottom: 10px;padding-left: 10px;}.item .box {float: left;width: 300px;height: 100px;margin-left: 50px;margin-top: 50px;}.cart-content .item input {display: block;float: left;margin-top: 90px;background-color: #ccc;}.item .box img {width: 145px;float: left;margin-right: 5px;}.item .box p {text-indent: 2em;width: 145px;float: left;font-size: 12px;}.item>div {float: left;margin-top: 100px;}.item-price {margin-left: 107px;}.item-num {margin-left: 70px;}.item-sum {margin-left: 72px;}.item-opration {margin-left: 90px;}.item-num span {display: block;width: 15px;height: 20px;float: left;border: 1px solid #ccc;margin-top: 0px;text-align: center;line-height: 17px;}.item .item-num .nums {float: left;width: 35px;height: 20px;border: 1px solid #ccc;text-align: center;font-size: 12px;line-height: 20px;margin-top: 0;}/* 总计 */.cart-footer {width: 1070px;height: 100px;background-color: #eeeddd;line-height: 90px;padding-left: 10px;}.cart-footer .select-all input {vertical-align: middle;margin-top: -2px;}.cart-footer .select-all span {vertical-align: middle;display: inline-block;}.cart-footer>div {float: left;line-height: 100px;}.footer-total {margin-left: 435px;}.footer-price {margin-left: 70px;}.footer-num {margin-left: 105px;}.footer-sum {margin-left: 95px;}.footer-opration {margin-left: 95px;}.w {width: 1070px!important;}

五、核心步骤:

在看jquery代码的前面或过程中可以看一下步骤的分析,对代码的理解特别有帮助!

六、jQuery代码(重点)

我写的注释特别详细,特别多,在这我也就不啰嗦了,大伙有我写的不清楚的或不太完美的,希望各位多多指教~

$(function() {// 给nav导航栏中的li添加悬浮变字体颜色的效果(完全可以不用做)$("nav li").stop().mouseenter(function() {$(this).css('color', 'red');}).stop().mouseleave(function() {$(this).css('color', '#000');})getPriceSum();// 让全选按钮的checked属性的状态和所有item的复选框状态一致// checked属性改变之后触发$(".select-all input").change(function() {// 获取它的状态,给所有的item里面的复选框赋值var check = $(this).prop('checked');// 让每个小项目和全选按钮同时改变值,否则点击最上面全选按钮,最下面全选按钮选不上$(".item input,.select-all input").prop('checked', check);// 当全选按钮发生改变,如果是选中状态给所有的item加current类if (check) {$('.item').addClass('current');} else {$('.item').removeClass('current');}});// 点击下面每个项目中的复选框,如果复选框都选上了,让上面下面的全选按钮也选上;// 如果没都选上,就让全选按钮处于没选中状态。$(".item input").change(function() {// 如果所有item中复选框被选中的数目等于总数,就让让全选按钮也选上// $(".item input:checked"):被选中的个数,但他是以伪元素形式输出,再加上.length即可if ($(".item input:checked").length == $(".item").length) {$(".select-all input").prop('checked', true);} else if ($(".item input:checked").length < $(".item").length) {$(".select-all input").prop('checked', false);}// 当点击每个item前面的复选框按钮时,如果是选中状态就添加current类var check = $(this).prop('checked');if (check) {$(this).parents('.item').addClass('current');} else {$(this).parents('.item').removeClass('current');}});// 增加商品数量模块,点击加号时,让当前商品数量++$(".item .right").click(function() {var num = $(this).siblings('.nums').val();num++;$(this).siblings('.nums').val(num);// 点击右侧按钮时候,当前的商品后面的小计也要做相应的改变// 把价格中的数字截取出来*数目,再赋值给小计,赋值时+"¥"。var price = $(this).parents('.item-num').siblings('.item-price').text().substr(1);// 计算结果,保留两位小数var sum = (price * num).toFixed(2);// 给他爹的兄弟赋值$(this).parents('.item-num').siblings('.item-sum').text("¥" + sum);getsum();getPriceSum();});// 减少商品,当点击左按钮时,先获取再--,最后赋值;到了1就不能再减了。$(".item .left").click(function() {var num = $(this).siblings('.nums').val();if (num <= 1) {return false;}num--;$(this).siblings('.nums').val(num);// 点击左侧按钮时候,当前的商品后面的小计也要做相应的改变// 把价格中的数字截取出来*数目,再赋值给小计,赋值时+"¥"。var price = $(this).parents('.item-num').siblings('.item-price').text().substr(1);// 计算结果,保留两位小数var sum = (price * num).toFixed(2);// 给他爹的兄弟赋值$(this).parents('.item-num').siblings('.item-sum').text("¥" + sum);getsum();getPriceSum();});// 当用户在input件数,输入框中自定义输入数字时,也要修改小计$(".item .nums").change(function() {var num = $(this).val();// 如果输入的数值小于1,先给它赋值为1,并把总价格赋值为单价if (num < 1) {$(this).val(1);// 获取当前价格var price = $(this).parents('.item-num').siblings('.item-price').text().substr(1);// 给item后面的总价赋值.toFixed()方法前面必须是数字类型的才行price = parseFloat(price);$(this).parents('.item-num').siblings('.item-sum').text("¥" + (price).toFixed(2));getsum();getPriceSum();return false;}// 获取价格值var price = $(this).parents('.item-num').siblings('.item-price').text().substr(1);// 计算结果,保留两位小数var sum = (price * num).toFixed(2);// 给他爹的兄弟赋值$(this).parents('.item-num').siblings('.item-sum').text("¥" + sum);getsum();getPriceSum();})// 计算总计,当点击加号或减号,或更改input文本框时触发,因多次使用所以封装函数function getsum() {var sum = 0;$(".item .nums").each(function(i, domele) {var num = 0;// $(domele).val()是字符型,需要转化为数值型num = parseInt($(domele).val());sum += num;})// 给总计里面的数目赋值$(".footer-num span").text(sum);}// 计算总额,先获取当前item的商品数目*当前item的价格,再遍历相加,最后赋值,因多次使用所以封装函数function getPriceSum() {var priceSum = 0;$(".item .nums").each(function(i, domele) {// 获取当前元素的件数var num = parseInt($(domele).val());// 获取当前元素的价格var price = parseFloat($(this).parents('.item-num').siblings('.item-price').text().substr(1));priceSum += (num * price);})priceSum = priceSum.toFixed(2);// 给总价赋值$(".footer-sum").text('¥' + priceSum);}// 用户点击每个item后面的删除按钮时,删除当前item$(".item .item-opration").click(function() {$(this).parents(".item").remove();isChecked();getPriceSum();getsum();})// 当点击footer里面的删除时,删除勾选前面复选框的item$(" .footer-opration").click(function() {// 判断每个item前面的复选框是否被选中,如果选中删除他所对应的item即可$(".item #checkbox:checked").parents(".item").remove();isChecked();getPriceSum();getsum();})// 如果内容区域的item的数目等于0,就取消全选按钮的选中状态isChecked();function isChecked() {if ($(".item").length == 0) {$(".select-all input").prop('checked', false);}}})

七、感谢

最后一直都是跟着黑马的pink老师学习的,黑马很好,希望大家多多支持他!

jQuery购物车完整功能实现,全代码详解(有动态效果图)相关推荐

  1. Vue+Spring Boot实现图片验证码、邮箱验证码以及Cookie记住我功能(前后端代码详解)

    Vue实现图片验证码.邮箱验证码以及Cookie记住我功能 前言 图片验证码实现 Vue前端实现 Spring Boot后端实现 邮箱验证码实现 Vue前端实现 Spring Boot后端实现 Coo ...

  2. 万字长文 | 超全代码详解Python制作精美炫酷图表教程

    本文转自『读芯术』 生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图 本文将探讨三种用Python可视化数据的不同方法.以可视化<2019年世界幸福报告>的数据为例,本文用Gapmi ...

  3. php推荐码生成,最新最全PHP生成制作验证码代码详解(推荐),验证码详解_PHP教程...

    最新最全PHP生成制作验证码代码详解(推荐),验证码详解 1.0 首先先看代码 好,现在结合以上代码,来分析分析以上用到的几个函数: ① imagecreatetruecolor(); imagecr ...

  4. php怎么自定义设置打印区域,JavaScript_jQuery实现区域打印功能代码详解,使用CSS控制打印样式,需要设 - phpStudy...

    jQuery实现区域打印功能代码详解 使用CSS控制打印样式,需要设置样式media="print",并且将页面中不需要打印的元素的样式display属性设置为none.如DEMO ...

  5. 基于spring security实现vue2前后端分离的双token刷新机制(完整代码详解,含金量拉满!)

    目录 一.前言: 核心功能概要: 通过加密算法创建一个用户: 二.后端 代码详解: 1.代码整体结构: 2.所需依赖: 3.UserDetailServiceImpl拦截用户登陆: 4.所需工具类 4 ...

  6. html元素自己属性代码,jQuery如何操作HTML的元素和属性?(代码详解例)

    本篇文章给大家带来的内容是介绍jQuery如何操作HTML的元素和属性?(代码详解例),让大家了解jQuery操作元素和属性的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 ...

  7. html语言中表格由什么组成,html表格基本结构是什么?html表格的完整代码详解

    表格在网页制作中用的很多,很多网站都是要求教程有很多大量的表格,表格的使用不仅让数据更加清楚,而且会让表格比较美观.那么html表格基本结构是什么?下面我们对html表格的完整代码进行详解.[推荐阅读 ...

  8. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...

    来自 | 知乎   作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...

  9. jQuery选择器代码详解(一)——Sizzle方法

    对jQuery的Sizzle各方法做了深入分析(同时也参考了一些网上资料)后,将结果分享给大家.我将采用连载的方式,对Sizzle使用的一些方法详细解释一下,每篇文章介绍一个方法. 若需要转载,请写明 ...

最新文章

  1. 重温强化学习之策略梯度算法
  2. input 只输入数字并限制最大输入长度
  3. Python获取本地mac地址、主机名、IP地址
  4. WinForm之创建word并操作文档
  5. “Device eth0 does not seem to be present”解决办法
  6. 佳能MP259打印重影的问题始终无法得到彻底解决,今天终于找到方法了
  7. oracle查询优化不走缓存,Oracle数据库存储优化问题
  8. po 价格条件表_海纳易拓图文讲解SAP MM模块采购价格条件
  9. unity透明物体显示问题
  10. 机器学习笔记(参考吴恩达机器学习视频笔记)16_决策树
  11. appium历史版本下载
  12. Cocoapods里Podfile与Podfile.lock的作用机制:解决Fastlane google-api-client-0.23.9 requires ruby version ~> 2.0
  13. pythonai人脸识别_AI的强大!用Python实现一个简单的人脸识别
  14. 客户案例:Coremail安全海外中继保障德赛集团跨境通邮安全
  15. 中国NPP净初级生产力数据/植被覆盖空间分布数据分享(2000-2021)
  16. 咸鱼的 GitHub 情报 | 20200103 期
  17. Linux 查看quota状态,Linux命令之quota详解
  18. flex builder 3 序列号和Flash Builder 4 序列号
  19. 3.1 ElasticSearch River插件开发
  20. 【STM32】 4X4矩阵键盘电路

热门文章

  1. 八通道IEPE振动传感器数据高速同步网络采集模块 WJ288
  2. 基于JAVA水果商城设计计算机毕业设计源码+数据库+lw文档+系统+部署
  3. 算法-动态规划2图问题-TSP问题
  4. docker虚拟化技术
  5. Mac高效-自定义悬浮菜单
  6. [BZOJ1502][NOI2005]月下柠檬树(辛普森积分+解析几何)
  7. 关于开发中遇到的一些问题记录
  8. Java 效率编码 必备插件 Lombok 让代码更优雅
  9. 【CS224W】(task1)图机器学习导论
  10. 海盗王巨剑挂机辅助-海盗牛牛