官术网_书友最值得收藏!

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ē)演示

主站蜘蛛池模板: 新田县| 沂源县| 安国市| 黎平县| 探索| 广西| 且末县| 精河县| 郁南县| 蓝山县| 荔浦县| 长葛市| 都昌县| 蛟河市| 苏尼特右旗| 图木舒克市| 顺义区| 大厂| 怀化市| 原平市| 台南县| 镇康县| 通州市| 嘉峪关市| 德钦县| 绥宁县| 安阳县| 铁岭县| 盐亭县| 黄梅县| 焦作市| 丹江口市| 锦州市| 商城县| 屏山县| 大兴区| 江源县| 始兴县| 开江县| 晋宁县| 扎兰屯市|