easyUI 购物车 Doppable.Draggable

知识点

一:基本的拖动和放置


首先,我们创建三个元素:

     

<div id="dd1" class="dd-demo"></div>
 <div id="dd2" class="dd-demo"></div>
 <div id="dd3" class="dd-demo"></div>

对于第一个元素,我们通过默认值让其可以拖动。

$('#dd1').draggable();

对于第二个元素,我们通过创建一个克隆(clone)了原来元素的代理(proxy)让其可以拖动。

$('#dd2').draggable({
    proxy:'clone'
 });

对于第三个元素,我们通过创建自定义代理(proxy)让其可以拖动。此时传递的source会默认传递给easyui框架,自定义的P对象则为拖动时的显示内容。

$('#dd3').draggable({
    proxy:function(source){
    var p = $('<div class="proxy">proxy</div>');
    p.appendTo('body');//注释掉则拖动时不显示P对象
    return p;//必须返回P
    }
 });


二:正文

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta name="keywords" content="jquery,ui,easy,easyui,web">
	<meta name="description" content="easyui help you build your web page easily!">
	<title>jQuery EasyUI Demo</title>
	<link rel="stylesheet" type="text/css" href="../jquery-easyui-1.4.1/themes/default/easyui.css">
	<link rel="stylesheet" type="text/css" href="../jquery-easyui-1.4.1/themes/icon.css">
	<script type="text/javascript" src="../jquery-easyui-1.4.1/jquery.min.js"></script>
	<script type="text/javascript" src="../jquery-easyui-1.4.1/jquery.easyui.min.js"></script>
	<style type="text/css">
		.products{
			list-style:none;
			margin-right:300px;
			padding:0px;
			height:100%;
		}
		.products li{
			display:inline;
			float:left;
			margin:10px;
		}
		.item{
			display:block;
			text-decoration:none;
		}
		.item img{
			border:1px solid #333;
		}
		.item p{
			margin:0;
			font-weight:bold;
			text-align:center;
			color:#c3c3c3;
		}
		.cart{
			position:fixed;
			right:0;
			top:0;
			width:300px;
			height:100%;
			background:#ccc;
			padding:0px 10px;
		}
		h1{
			text-align:center;
			color:#555;
		}
		h2{
			position:absolute;
			font-size:16px;
			left:10px;
			bottom:20px;
			color:#555;
		}
		.total{
			margin:0;
			text-align:right;
			padding-right:20px;
		}
	</style>
	<script>
		var data = {"total":0,"rows":[]};
		var index;//购物车商品索引
	  $(function(){
		$("#shopcar").datagrid({
			singleSelect:true,		
		});
		//商品图片
		$(".item").draggable({
			revert:true,
			proxy:'clone',
			//设置拖动zindex,拖动所产生的prox是个对象。
			onStartDrag:function(){$(this).draggable('proxy').css('z-index',10);},
			onStopDrag:function(){
					$(this).draggable('options').cursor='pointer';
				}			
		});
		//购物车
		$(".cart").droppable({
			//只接受item商品
			accept:'.item',
			//拖进来的时候触发
			onDrop:function(e,source){
				var id = parseInt($(source).find('p:eq(2)').html());
				var name = $(source).find('p:eq(0)').html();
				var price = parseInt($(source).find('p:eq(1)').html());
				//进行商品的数据的处理
				
			    shopcarManage(id,name,price);
				//重新加载数据
				//$("#shopcar").datagrid('reload');
				//console.log(JSON.stringify(data));
				$('#shopcar').datagrid('loadData', data);
				$(".total").empty().html("合计:"+data.total);
			}			
		});
	  });

	//修改已有数据结构值
	function shopcarManage(id,name,price){
		//购物车是否为空
		 
		var add=0;
		if(data.rows.length){
			//遍历是否存在该商品
			for(var i=0;i<data.rows.length;i++){
				//如果购物车存在要添加的商品
				if(data.rows[i].shop_id==id){//
					//修改该数据节点
					data.rows[i].shop_counts+=1;
					data.rows[i].shop_price+=price;
					add=1;
				}
			}
			if(add==0){
				data.rows.push({"shop_id":id,"shop_name":name,"shop_counts":1,"shop_price":price});
			}
		}else{
			//添加新商品
			data.rows.push({"shop_id":id,"shop_name":name,"shop_counts":1,"shop_price":price});
		}
		//商品购物车总价增加
		data.total+=price;
	}	
</script>
</head>
<body style="margin:0;padding:0;height:100%;background:#fafafa;">
	<ul class="products">
		<li>
			<a href="#" class="item">
				<img src="images/shirt1.gif"/>
				<div>
					<p>大衣</p>
					<p>25</p>
					<p>1</p>
				</div>
			</a>
		</li>
		<li>
			<a href="#" class="item">
				<img src="images/shirt2.gif"/>
				<div>
					<p>围巾</p>
					<p>35</p>
					<p>2</p>
				</div>
			</a>
		</li>
		<li>
			<a href="#" class="item">
				<img src="images/shirt3.gif"/>
				<div>
					<p>帽子</p>
					<p>15</p>
					<p>3</p>
				</div>
			</a>
		</li>
		<li>
			<a href="#" class="item">
				<img src="images/shirt4.gif"/>
				<div>
					<p>风衣</p>
					<p>45</p>
					<p>4</p>
				</div>
			</a>
		</li>
	</ul>
	<div class="cart">
		<h1>购物车</h1>
		<div style="background:#fff">
			<table id="shopcar">
				<thead>
				<tr>
					<th field="shop_id" width=30 align="right">id</th>					 
					<th field="shop_name" width=140 align="center">商品</th>
					<th field="shop_counts" width=60 align="right">数量</th>
					<th field="shop_price" width=60 align="right">合计</th>
				</tr>
				</thead>			
			</table>
		</div>
		<p class="total">总价: $0</p>
		<h2>拖动商品到购物车</h2>
	</div>
</body>
</html>

我们可以把easyUI 的每个控件看为一个特殊的选择器,类似jquery的选择器。每个选择器获取后返回的都是一个对象。easyUI为每一个获取到的对象提供一个事务处理接口,接口声明方式为:  选择器.接口({接口初始化属性或者方法});例如:

为ID为table_data的表格声明一个datagrid接口:

<pre name="code" class="html">$("#table_data").datagrid();//()内可以设置datagrid属性
 

如果对已经声明了接口的选择器进行onclick等事件绑定,则只需再次调用接口声明方式即可,与已经声明了的不冲突也不重复。例如:

1.为ID为table_data的表格声明一个datagrid接口,且绑定onSelect事件

既可以写为:

<pre name="code" class="javascript">$("#table_data").datagrid({onSelect:function(){...}});
 
也可以写为: 

<pre name="code" class="javascript">$("#table_data").datagrid('onSelect',function(){...});
 

如果对已经声明了接口的选择器控件所支持的方法进行调用,调用方式为

$("#table_data").datagrid('reload',参数可有可无);


Draggable:将元素拖动至指定的位置,属性:

    proxy:指定拖动规则,可为字符串或方法。字符串为‘clone’,表示在拖动的时候鼠标显示为该元素。

                                          方法为自定义,务必返回jquery对象,定义的对象也要为jquery对象

    revert:是否松开鼠标恢复原位置。true为恢复,否则则元素位置改变

如果需要拖动至某个元素,则目的元素需要具有可droppable性。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值