Jquery 快速构建可拖曳的购物车DragDrop


Posted in Javascript onNovember 30, 2009

这样一来,购买者只需要把自己感兴趣的商品拖曳到自己的购物车中,也可以从购物车中删除商品 同时更新购物车的总体价格和数量。
那咱们就开始实例吧,本实例并没有链接数据库读取数据来初始化Products,而是创建了一些虚拟的商品如下:
1、 创建Product实体类

public class Product 
{ 
public string Code { get; set; } 
public string Name { get; set; } 
public string Description { get; set; } 
public double Price { get; set; } 
} 
[code] 
2、 构建商品List<Product> 
[code] 
public class Product 
{ 
public string Code { get; set; } 
public string Name { get; set; } 
public string Description { get; set; } 
public double Price { get; set; } 
}

3、创建DataList并绑定List<Product>
<asp:DataList ID="dlProducts" RepeatColumns="3" 
RepeatDirection="Horizontal" runat="server"> 
<ItemTemplate> 
<div class="productItemStyle" price='<%# Eval("Price") %>' 
code='<%# Eval("Code") %>' id='item_<%# Container.ItemIndex + 1 %>'> 
<li> 
<%# Eval("Code") %> 
</li> 
<li> 
<%# Eval("Name") %> 
</li> 
<li> 
<%# Eval("Description") %> 
</li> 
<li> 
$<%# Eval("Price") %> 
</li> 
</div> 
</ItemTemplate> 
</asp:DataList> 
private void BindData() 
{ 
var products = GetProducts(); 
dlProducts.DataSource = products; 
dlProducts.DataBind(); 
}

productItemStyle 样式名称
Container.ItemIndex动态生成连续的商品编号
Jquery 快速构建可拖曳的购物车DragDrop
4、 生成Products Div Draggable
下载最新的Jquery JS文件及其UI文件:
<script language="javascript" type="text/javascript" src="jquery-1.2.6.min.js"></script> 
<script language="javascript" type="text/javascript" 
src="jquery-ui-personalized-1.6rc4.min.js"></script>

页面初始化时生成Div Draggable
$(document).ready(function() { 
$(".productItemStyle").draggable({ helper: "clone", opacity: "0.5" }); 
)};

5、创建一个DropZone
DropZones 是购物车区域
$(".dropZone").droppable( 
{ 
accept: ".productItemStyle", 
hoverClass: "dropHover", 
drop: function(ev, ui) { 
var droppedItem = ui.draggable.clone().addClass("droppedItemStyle"); 
var productCode = droppedItem[0].attributes["code"].nodeValue; 
var productPrice = 
getFormattedPrice(droppedItem[0].attributes["price"].nodeValue); 
var removeLink = document.createElement("a"); 
removeLink.innerHTML = "Remove"; 
removeLink.className = "deleteLink"; 
removeLink.href = "#"; 
removeLink.onclick = function() 
{ 
$(".dropZone").children().remove("#" + droppedItem[0].id); 
updateTotal(productPrice * (-1)); 
} 
droppedItem[0].appendChild(removeLink); 
$(this).append(droppedItem); 
updateTotal(productPrice); 
} 
} 
);

Accept参数:展示Class= “productItemStyle”的Div
hoverClass参数:当有Product放到DropZone时的样式
drop函数:当Product拖放到DropZone时出发的函数,此函数主要做了一个Product Item的Clone,价格的计算、添加Remove按钮以及到点击Remove按钮时所触发的事件。
价格的计算updateTotal()函数
// update the total! 
function updateTotal(price) { 
total += parseFloat(price); 
$("#total").html(total.toFixed(2)); 
$(".shoppingCartTotal").effect("bounce"); 
}

最终效果如下图:
Jquery 快速构建可拖曳的购物车DragDrop
英文原文地址:http://www.codeproject.com/KB/aspnet/JQueryShoppingCart.aspx
Javascript 相关文章推荐
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
May 15 Javascript
基于jquery跨浏览器显示的file上传控件
Oct 24 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
May 10 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
jQuery实现鼠标选文字发新浪微博的方法
Apr 02 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
详解webpack性能优化——DLL
Oct 20 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 Javascript
vue实现户籍管理系统
May 29 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 #Javascript
Ruffy javascript 学习笔记
Nov 30 #Javascript
jquery 分页控件实现代码
Nov 30 #Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
Nov 30 #Javascript
Aptana调试javascript图解教程
Nov 30 #Javascript
jQuery chili图片远处放大插件
Nov 30 #Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 #Javascript
You might like
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
js获取页面description的方法
2015/05/21 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
2014年大班元旦活动方案
2014/02/26 职场文书
2014年团队工作总结
2014/11/24 职场文书
面试通知短信
2015/04/20 职场文书
企业战略合作意向书
2015/05/08 职场文书
初中政治教学反思
2016/02/23 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL