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之ESC(第二类混淆)
May 06 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
Jan 25 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
Aug 10 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
Nuxt 项目性能优化调研分析
Nov 07 Javascript
vue 数字翻牌器动态加载数据
Apr 20 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
php框架知识点的整理和补充
2021/03/01 PHP
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
wxpython实现图书管理系统
2018/03/12 Python
numpy库reshape用法详解
2020/04/19 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
编程实现去掉XML的重复结点
2014/05/28 面试题
董事长岗位职责
2013/11/30 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
户外活动总结范文
2014/04/30 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
大学生学年个人总结
2015/02/15 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python