初学者用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虚假购物车-------与真实数据无关的更多相关文章

  1. 基于jquery右侧悬浮加入购物车代码

    分享一款基于jquery右侧悬浮加入购物车代码.这是一款基于jQuery实现的仿天猫右侧悬浮加入购物车菜单代码. 在线预览   源码下载 实现的代码: <!--左侧产品parabola.js控制 ...

  2. jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍

    这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...

  3. jQuery 2.0.3 源码分析 数据缓存

    历史背景: jQuery从1.2.3版本引入数据缓存系统,主要的原因就是早期的事件系统 Dean Edwards 的 ddEvent.js代码 带来的问题: 没有一个系统的缓存机制,它把事件的回调都放 ...

  4. jQuery初探 jQuery选取和操纵元素的特点

    jQuery初探 jQuery选取和操纵元素的特点 JavaScript选取元素 先来看看不用jQuery的时候我们是怎么处理元素选取的. JavaScript选取元素的时候,可以根据id获取元素,当 ...

  5. jQuery实例——jQuery实现联动下拉列表查询框--转http://www.cnblogs.com/picaso/archive/2012/04/08/2437442.html#undefined

    jQuery实例--jQuery实现联动下拉列表查询框   在查询与列表显示的时候经常用到联动列表显示,比如一级选项是国家,二级选项是省,三级是市,这样的联动是联系的实时导出的,比如你不可能选择了四川 ...

  6. jQuery - 2.jQuery选择器

    1.id 选择器 2.标签选择器 3.类选择器 4.复合选择器 5.层次选择器 JQuery的迭代   JQuery选择器 JQuery选择器用于查找满足条件的元素,比如可以用$("#控件I ...

  7. jQuery-认识JQuery,jQuery选择器

    认识JQuery: 1.window.onload与$(document).ready()的区别 window.onload $(document).ready() 执行时机 必须等待网页中的所有内容 ...

  8. jQuery获取一般处理程序(ashx)的JSON数据

    昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程 ...

  9. 【转】Jquery ajax方法解析返回的json数据

    转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...

随机推荐

  1. ubuntu14.0开机guest账号禁用方法

    在终端里进入/usr/share/lightdm/lightdm.conf.d/目录 sudo vim 50-unity-greeter.conf 然后在文件里输入: [SeatDefaults] a ...

  2. Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage

    ylbtech-Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage 1.返回顶部 1.1. pack ...

  3. Django - app

    1.app目录 migrations:数据库操作的记录(只记录修改表结构的记录); __init__文件:python2中必须填加,python3中无要求,可以不添加: admin:django为我们 ...

  4. linux下的vi的使用方法

    vi的使用: 一般指令模式: vi打开一个文件就直接进入一般指令模式,可以进行删除.复制.粘贴.但是不可以对文件的内容进行修改. 常用命令: ctrl + f 向下移动一页 ctrl + b 向上移动 ...

  5. JavaSE 学习笔记之package包(十一)

    包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...

  6. Caffe 工程的一些编译错误以及解决方案

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51371936 整理一下最近遇到caff ...

  7. noip模拟赛 幻灯结界

    题目描述59式给你出了一道**题:有n个防御人(守方)还有n个攻击坦克(攻方)每个防御人有护甲a[i],而攻击方每个坦克有火力b[i]如果一个防守方的护甲不小于攻击方的攻击力,就可以防的住然而我们保持 ...

  8. hdu 4975 最大流解决行列和求矩阵问题,用到矩阵dp优化

    //刚开始乱搞. //网络流求解,如果最大流=所有元素的和则有解:利用残留网络判断是否唯一, //方法有两种,第一种是深搜看看是否存在正边权的环,见上一篇4888 //至少四个点构成的环,第二种是用矩 ...

  9. hive计算日期差

    首先,hive本身有一个UDF,名字是datediff.我们来看一下这个日期差计算的官方描述,(下面这个是怎么出来的): hive> desc function extended datedif ...

  10. [bzoj1879][Sdoi2009]Bill的挑战_动态规划_状压dp

    Bill的挑战 bzoj-1879 Sdoi-2009 题目大意: 注释:$1\le t \le 5$,$1\le m \le 15$,$1\le length \le 50$. 想法: 又是一个看数 ...