初学jQuery之jQuery虚假购物车-------与真实数据无关
初学者用jquery来写仿真的购物车,确实有点恶心,那我们今天就把这万恶的购物车剖析一下,来看看到底有什么难的.
购物车的效果图

那我们先从复选框开始吧,废话不多说,上代码!!
带有序号的,都是一些分析!
1.全选或全不选效果
//点击复选框全选或全不选效果
$("#allCheckBox").click(function(){
var checked=$(this).is(":checked"); //检查这个集合里有没有匹配的元素 返回true,false
$(".cart_td_1").children().attr("checked",checked); //把上面的变量放在这边来用
});
//判断是否全选
function ifAllChecked(){
var checkedBoxs=$(".cart_td_1").children(); //获取到集合
var sum=checkedBoxs.size(); //size() 与length() 返回的值是一样的
var k=0; //迭代变量
//each是循环
checkedBoxs.each(function(index,dom){ //index当前对象的索引,或者是所有的对象的索引 dom当前对象,或者是对象
if($(dom).is(":checked")) k++; //匹配页面上处于选中状态的元素
});
if(k==sum){ //当我们拿出了input复选框的个数
$("#allCheckBox").attr("checked",true); //如果为true的话,就改变值
}else{
$("#allCheckBox").attr("checked",false); //否则的话,我们也改变值
}
}
ifAllChecked();//页面加载完后运行
//单选判断
$(".cart_td_1").children().click(function(){
ifAllChecked();
});
当我们解决了复选框的问题后,剩下的就是计算总价与小计的问题了,其实咋们仔细想想的话,压根就不难,难的是这些值它们全在html页面上,我们该怎么把他们拿下来,为我们所用哪?!!!!
2.进行计算函数
//计算总价与小计
function productCount(){ var $tr=$("#shopping").find("tr[id]"); //总价与积分的初始值
var summer=0;
var integral=0; $tr.each(function(i,dom){ //我们开始把页面上的值全部拿下来
var num=$(dom).children(".cart_td_6").find("input").val();//商品数量
var price=num*$(dom).children(".cart_td_5").text();//商品小计 $(dom).children(".cart_td_7").html(price);//显示商品小计
summer+=price;//总价 已经开始在累加
integral+=$(dom).children(".cart_td_4").text()*num;//积分
});
$("#total").text(summer); //总价
$("#integral").text(integral); //积分
}
productCount();//页面加载完后运行
3.点击减号或加号得行为
//商品增加减少,flag为true时增加,flag为false时减少
function changeNumber(dom,flag){
var $input = $(dom).parent().find("input");
var value = $input.val(); if(flag){
value++;
}else{
value--;
if(value<=0){ //最起码件数不能低于0件,
value=1; //当我们已经规定了不能低于0件的时候,我们到底还是把件数减了,所以我们还是的把件数调整回来
alert("宝贝数量必须大于0");
}
}
$input.val(value);
productCount();
};
因为加号和减号是图片,所以我们得把函数绑定到图片上
4.把点击加减函数绑定到图片上
//点击减少 当我们点击图片的时候,顺便调用一下方法
$(".cart_td_6").find("img[alt='minus']").click(function(){changeNumber(this,false);});
//点击增加
$(".cart_td_6").find("img[alt='add']").click(function(){changeNumber(this,true);});
当然我们还有删除某一列商品,所以我使用了节点操作
5.节点操作
//点击删除 节点操作
$(".cart_td_8").find("a").click(function(){
$(this).parent().parent().prev().remove();//删除前一tr
$(this).parent().parent().remove();//删除当前tr
productCount();
});
还有删除所选,所以我们自己还得自定义一个函数
6.删除所选
//点击删除所选
$("#deleteAll").click(function(){
$("#shopping").find("tr[id]").each(function(i,e){
var $tr=$(e);
//返回的值是true或false
var checked=$tr.children(".cart_td_1").children().is(":checked");
if(checked){
//prev遍历的方式用于搜索自己本身同辈元素的上一个
$tr.prev().remove();
$tr.remove();
}
});
//点击删除所选,依然调用计算总价的函数
productCount();
});
所以经过我们层层的解析,其实压根也不难,对吧!!!
我们这个虚假的购物车,才算完成!!!
那我们下次再见把!
初学jQuery之jQuery虚假购物车-------与真实数据无关的更多相关文章
- 基于jquery右侧悬浮加入购物车代码
分享一款基于jquery右侧悬浮加入购物车代码.这是一款基于jQuery实现的仿天猫右侧悬浮加入购物车菜单代码. 在线预览 源码下载 实现的代码: <!--左侧产品parabola.js控制 ...
- jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍
这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...
- jQuery 2.0.3 源码分析 数据缓存
历史背景: jQuery从1.2.3版本引入数据缓存系统,主要的原因就是早期的事件系统 Dean Edwards 的 ddEvent.js代码 带来的问题: 没有一个系统的缓存机制,它把事件的回调都放 ...
- jQuery初探 jQuery选取和操纵元素的特点
jQuery初探 jQuery选取和操纵元素的特点 JavaScript选取元素 先来看看不用jQuery的时候我们是怎么处理元素选取的. JavaScript选取元素的时候,可以根据id获取元素,当 ...
- jQuery实例——jQuery实现联动下拉列表查询框--转http://www.cnblogs.com/picaso/archive/2012/04/08/2437442.html#undefined
jQuery实例--jQuery实现联动下拉列表查询框 在查询与列表显示的时候经常用到联动列表显示,比如一级选项是国家,二级选项是省,三级是市,这样的联动是联系的实时导出的,比如你不可能选择了四川 ...
- jQuery - 2.jQuery选择器
1.id 选择器 2.标签选择器 3.类选择器 4.复合选择器 5.层次选择器 JQuery的迭代 JQuery选择器 JQuery选择器用于查找满足条件的元素,比如可以用$("#控件I ...
- jQuery-认识JQuery,jQuery选择器
认识JQuery: 1.window.onload与$(document).ready()的区别 window.onload $(document).ready() 执行时机 必须等待网页中的所有内容 ...
- jQuery获取一般处理程序(ashx)的JSON数据
昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程 ...
- 【转】Jquery ajax方法解析返回的json数据
转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...
随机推荐
- Linux如何查看端口(转)
Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...
- Django工程
一.Django工程创建 1.Django安装: pip3 install django 安装成功后,会在python的安装目录下“Scripts"中生成”django-admin.exe& ...
- EF 配置
DbContext public class ZSZDbContext : DbContext { //ILog ILogger 容易混淆 private static ILog log = LogM ...
- Shell 脚本编程 基本语法:
Shell 脚本编程语法: 注: 文章来源 http://www.cnblogs.com/yunquan/p/6821850.html 视频来源:https://www.bilibili.com/vi ...
- 【codeforces 767B】The Queue
[题目链接]:http://codeforces.com/contest/767/problem/B [题意] 排队去办护照; 给你n个人何时来的信息; 然后问你应该何时去才能在队伍中等待的时间最短; ...
- BUPT2017 wintertraining(16) #9
龟速补题.目前基本弃坑.已暂时放弃 D.I 两题. 下面不再写题意了直接说解法注意事项之类,直接放contest链接. https://vjudge.net/contest/151537 A.The ...
- 洛谷——P1505 苹果摘陶陶
题目背景 根据2005年的Noip普及组第一题衍生出的一题. 但是有一点点的恶搞成分在里面..... 题目描述 话说去年苹果们被陶陶摘下来后都很生气,于是就用最先进的克隆技术把陶陶克隆了好多份> ...
- 一起talk C栗子吧(第七十七回:C语言实例--DIY ls命令续)
各位看官们,大家好.上一回中咱们说的是DIY cat命令的样例.这一回咱们说的样例是:DIY ls命令续. 闲话休提,言归正转.让我们一起talk C栗子吧! 我们在前面的章回中DIY过ls命令.时间 ...
- Ambari-部署常见问题
重新启动ambari-server端后调用install.start API后返回200 导致该问题的解决办法是server在启动后没有收到agent的心跳即没有与agent建立连接,在此时进行API ...
- MySQL具体解释(15)-----------海量数据解说
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和訪问成为了系统设计的瓶颈问题. 对于一个大型的互联网应用.每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的 ...