- jQuery EasyUI從零開(kāi)始學(xué)
- 施堯
- 553字
- 2019-12-06 14:09:04
3.5 實(shí)戰(zhàn):購(gòu)物車(chē)的拖放
【本節(jié)詳細(xì)代碼參見(jiàn)隨書(shū)源碼:\源碼\easyui\example\ c3\shoppingCart.html】
本節(jié)將向讀者演示如何利用拖放和放置組件開(kāi)發(fā)一個(gè)購(gòu)物車(chē)程序。該程序允許用戶將商品拖放到購(gòu)物車(chē)內(nèi),并在購(gòu)物車(chē)內(nèi)顯示商品的名稱、單價(jià)以及數(shù)量,最后統(tǒng)計(jì)購(gòu)物車(chē)內(nèi)物品的總價(jià)。
首先在購(gòu)物車(chē)應(yīng)用中拖放的元素是一個(gè)個(gè)的產(chǎn)品,這些產(chǎn)品包含名稱、圖片、價(jià)格信息。為了能拖動(dòng)產(chǎn)品的全部信息,通常會(huì)將產(chǎn)品的各類信息放到一個(gè)父容器中,并在父容器中定義產(chǎn)品的相關(guān)屬性供放置區(qū)域獲取,相關(guān)代碼如下:
01 <div style="margin:20px" class="element" productname='空調(diào)' productprice=’3550’> 02 <image src="img/air.jpg" width='120px' style="display:inherit"></image> 03 <span style="margin:10px">空調(diào)</span> 04 <span>3550元</span> 05 </div>
本例在放置區(qū)域中以數(shù)據(jù)網(wǎng)格來(lái)代替購(gòu)物車(chē),當(dāng)產(chǎn)品被拖放到放置區(qū)域時(shí),可以通過(guò)父容器中定義的屬性獲取產(chǎn)品的信息,并新增或更新數(shù)據(jù)網(wǎng)格的相關(guān)數(shù)據(jù),部分代碼如下:
01 $('.right').droppable({ 02 accept:'.element', 03 onDrop:function(e,source){ 04 var name = $(source).attr('productname'); 05 var price = $(source).attr('productprice'); 06 //獲取數(shù)據(jù)網(wǎng)格中的全部數(shù)據(jù) 07 var data = $('#dg').datagrid('getData'); 08 var rows = data.rows; 09 //當(dāng)前狀態(tài),0代表新增產(chǎn)品,1代表更新產(chǎn)品 10 var state = 0; 11 //總價(jià) 12 var sum = 0; 13 //遍歷數(shù)據(jù)網(wǎng)格中的所有行 14 rows.forEach(function(item, index){ 15 //假如該產(chǎn)品存在的話則更新數(shù)據(jù)網(wǎng)格中對(duì)應(yīng)的行 16 if(item.name == name ){ 17 var num = item.num+1; 18 $('#dg').datagrid('updateRow',{ 19 index:index, 20 row:{ 21 'name': name, 22 'price': price, 23 'num':num 24 } 25 }); 26 state = 1; 27 sum += price*num; 28 }else{ 29 sum += item.price*item.num; 30 } 31 }); 32 //假如產(chǎn)品不存在的話則在數(shù)據(jù)網(wǎng)格中新增該產(chǎn)品 33 if(state ==0){ 34 $('#dg').datagrid('appendRow',{ 35 'name': name, 36 'price': price, 37 'num':1 38 }); 39 sum += price*1; 40 } 41 //底部區(qū)域顯示產(chǎn)品的總價(jià) 42 $('#dg').datagrid('reloadFooter',[ 43 {name: '總價(jià)', price: sum}, 44 ]); 45 } 46 });
最終運(yùn)行結(jié)果如圖3.8所示。

圖3.8 購(gòu)物車(chē)演示
推薦閱讀
- AngularJS入門(mén)與進(jìn)階
- Mastering JavaScript Object-Oriented Programming
- Learning Spring 5.0
- 數(shù)據(jù)結(jié)構(gòu)(Python語(yǔ)言描述)(第2版)
- PHP 編程從入門(mén)到實(shí)踐
- Learning Neo4j 3.x(Second Edition)
- 微信公眾平臺(tái)開(kāi)發(fā):從零基礎(chǔ)到ThinkPHP5高性能框架實(shí)踐
- Learning Apache Mahout Classification
- 機(jī)器學(xué)習(xí)與R語(yǔ)言實(shí)戰(zhàn)
- Access 2010中文版項(xiàng)目教程
- Regression Analysis with Python
- 精通MySQL 8(視頻教學(xué)版)
- OpenCV with Python Blueprints
- Docker:容器與容器云(第2版)
- Scratch編程入門(mén)與算法進(jìn)階(第2版)