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 相关文章推荐
纯js实现的论坛常用的运行代码的效果
Jul 15 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Jul 21 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
JavaScript操作cookie类实例
Mar 31 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
Node.js创建一个Express服务的方法详解
Jan 06 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
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的FTP学习(二)[转自奥索]
2006/10/09 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
python类继承用法实例分析
2014/10/10 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Python转换时间的图文方法
2019/07/01 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
《雨霖铃》教学反思
2014/02/22 职场文书
卫生巾广告词
2014/03/18 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
2014年变电站工作总结
2014/12/19 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android