淘宝购物车的交互效果

最近看了一个介绍说天猫的前台页面的布局与交互效果,看到购物车这块,自己也练练手,页面布局是借鉴过来的,只要是交互这块,如果有问题请指出。

<div class="cartDiv">
    <div class="cartTitle pull-right">
        <span>已选商品  (不含运费)</span>
        <span class="cartTitlePrice">¥0.00</span>
        <button class="createOrderButton" style="background-color: rgb(170, 170, 170);" disabled="disabled">结 算</button>
    </div>
    <div class="cartProductList">
        <table class="cartProductTable">
            <thead>
            <tr>
                <th class="selectAndImage">
                    <img src="images/cartNotSelected.png" class="selectAllItem" selectit="false">
                    全选
                </th>
                <th>商品信息</th>
                <th>单价</th>
                <th>数量</th>
                <th width="120px">金额</th>
                <th class="operation">操作</th>
            </tr>
            </thead>
            <tbody>
            <tr class="cartProductItemTR" oiid="936" style="background-color: rgb(255, 255, 255);">
                <td>
                    <img src="images/cartNotSelected.png" class="cartProductItemIfSelected" oiid="936" selectit="false">
                    <a href="#nowhere" style="display:none"><img src="images/cartSelected.png"></a>
                    <img src="images/3665.jpg" class="cartProductImg">
                </td>
                <td>
                    <div class="cartProductLinkOutDiv">
                        <a class="cartProductLink" href="#nowhere">美国iRobot扫地机器人吸尘器全自动家用智能扫地机650 天猫电器城</a>
                        <div class="cartProductLinkInnerDiv">
                            <img title="支持信用卡支付" src="http://how2j.cn/tmall/img/site/creditcard.png">
                            <img title="消费者保障服务,承诺7天退货" src="http://how2j.cn/tmall/img/site/7day.png">
                            <img title="消费者保障服务,承诺如实描述" src="http://how2j.cn/tmall/img/site/promise.png">
                        </div>
                    </div>
                </td>
                <td>
                    <span class="cartProductItemOringalPrice">¥7580.0</span>
                    <span class="cartProductItemPromotionPrice">¥5306.0</span>
                </td>
                <td>
                    <div class="cartProductChangeNumberDiv">
                        <span pid="365" class="hidden orderItemStock ">75</span>
                        <span pid="365" class="hidden orderItemPromotePrice ">5306.0</span>
                        <a href="#nowhere" class="numberMinus" pid="365">-</a>
                        <input value="1" autocomplete="off" class="orderItemNumberSetting" oiid="936" pid="365">
                        <a href="#nowhere" class="numberPlus" pid="365" stock="75">+</a>
                    </div>
                </td>
                <td><span pid="365" oiid="936" class="cartProductItemSmallSumPrice">¥5,306.00</span></td>
                <td><a href="#nowhere" oiid="936" class="deleteOrderItem">删除</a></td>
            </tr>
            <tr class="cartProductItemTR" oiid="935" style="background-color: rgb(255, 255, 255);">
                <td>
                    <img src="images/cartNotSelected.png" class="cartProductItemIfSelected" oiid="935" selectit="false">
                    <a href="#nowhere" style="display:none"><img src="images/cartSelected.png"></a>
                    <img src="images/8510.jpg" class="cartProductImg">
                </td>
                <td>
                    <div class="cartProductLinkOutDiv">
                        <a class="cartProductLink" href="#nowhere">阔腿裤三件套装女夏装2016新款大码雪纺时尚休闲气质棉麻九分裤潮</a>
                        <div class="cartProductLinkInnerDiv">
                            <img title="支持信用卡支付" src="http://how2j.cn/tmall/img/site/creditcard.png">
                            <img title="消费者保障服务,承诺7天退货" src="http://how2j.cn/tmall/img/site/7day.png">
                            <img title="消费者保障服务,承诺如实描述" src="http://how2j.cn/tmall/img/site/promise.png">
                        </div>
                    </div>
                </td>
                <td>
                    <span class="cartProductItemOringalPrice">¥235.0</span>
                    <span class="cartProductItemPromotionPrice">¥152.75</span>
                </td>
                <td>
                    <div class="cartProductChangeNumberDiv">
                        <span pid="809" class="hidden orderItemStock ">17</span>
                        <span pid="809" class="hidden orderItemPromotePrice ">152.75</span>
                        <a href="#nowhere" class="numberMinus" pid="809">-</a>
                        <input value="1" autocomplete="off" class="orderItemNumberSetting" oiid="935" pid="809">
                        <a href="#nowhere" class="numberPlus" pid="809" stock="17">+</a>
                    </div>
                </td>
                <td><span pid="809" oiid="935" class="cartProductItemSmallSumPrice">¥152.75</span></td>
                <td><a href="#nowhere" oiid="935" class="deleteOrderItem">删除</a></td>
            </tr>
            </tbody>
        </table>
    </div>
    <div class="cartFoot">
        <img src="images/cartNotSelected.png" class="selectAllItem" selectit="false">
        <span>全选</span>
        <!--<a href="#">删除</a> -->
        <div class="pull-right">
            <span>已选商品 <span class="cartSumNumber">0</span></span>
            <span>合计 (不含运费): </span>
            <span class="cartSumPrice">¥0.00</span>
            <button class="createOrderButton" style="background-color: rgb(170, 170, 170);" disabled="disabled">结  算</button>
        </div>
    </div>
</div>

购物车,我们要实现的效果有:

1、选中的商品和未选中的商品有背景颜色的标识;

2、数量增加或减少时,商品的金额会发生变化,商品的总金额会相应变化;

3、确定已选商品的个数;

4、点击全选,下面的商品会被全选;

5、可以自己输入商品的数量;(这块用户体验,感觉还需要商量,具体情况具体分析)

综合以上要求,交互代码如下:

/*购物车交互*/
$(function(){
//选中的商品标签添加一个类名,方便以后判断谁被选中 $(
'img.cartProductItemIfSelected').click(function(){ if($(this).attr('selectit')=='false'){ $(this).attr('src','images/cartSelected.png'); $(this).attr('selectit','select'); $(this).parent().parent().css('background','#fff8e1'); $(this).addClass('select'); /* $('.cartTitlePrice').text('¥'+)*/ }else{ $(this).attr('src','images/cartNotSelected.png'); $(this).attr('selectit','false'); $(this).parent().parent().css('background','#fff'); $(this).removeClass('select'); } //判断被选中的个数 var selen=$('img.select').length; if(selen>=1){ $('.createOrderButton').css('background','#c40000'); }else{ $('.createOrderButton').css('background','#aaaaaa'); } //计算选中商品的总金额,调用这个函数 total(); //已选商品件数设置 $('.cartSumNumber').text(selen); //全选,当都被选中的时候,全选按钮发生变化 var trlen=$('table tbody tr').length if(selen==trlen){ $('.selectAllItem').attr('selectit','select'); $('.selectAllItem').attr('src','images/cartSelected.png'); }else{ $('.selectAllItem').attr('selectit','false'); $('.selectAllItem').attr('src','images/cartNotSelected.png'); } }) //全选,点击全选,下面的商品都会被选上,同时商品个数、商品总价会发生变化 $('.selectAllItem').click(function(){ if($(this).attr('selectit')=='false'){ $(this).attr('selectit','select'); $(this).attr('src','images/cartSelected.png'); $('img.cartProductItemIfSelected').each(function(){ if($(this).attr('selectit')=='false'){ $(this).attr('src','images/cartSelected.png') $(this).attr('selectit','select'); $(this).addClass('select'); $(this).parent().parent().css('background','#fff8e1'); } }) total(); var selen=$('img.select').length; $('.cartSumNumber').text(selen); } }) //数量增加减少,自定义数量 $('input.orderItemNumberSetting').keyup(function(){ var inputNumb=$(this).val(); if(inputNumb==""){ inputNumb=1; } if(isNaN(inputNumb)&&parseInt(inputNumb)>=1){ inputNumb=parseInt(inputNumb); }else{ inputNumb=1 } //alert(inputNumb); $(this).val(inputNumb); }) $('.numberPlus').click(function(){ var inputNum1=$(this).siblings('input.orderItemNumberSetting').val(); inputNum1++; $(this).siblings('input.orderItemNumberSetting').val(inputNum1); var inputNumb=$(this).siblings('input.orderItemNumberSetting').val(); var singlepri=$(this).parent().parent().siblings().find('.cartProductItemPromotionPrice').text(); // alert(singlepri); singlepri=singlepri.substr(1); singlepri=singlepri.replace(/[^0-9.]/g, '');//非数字和.的替换,将金额换成浮点型number,这块可以根据需要进行变化,或者直接把金额用一个标签包进来,就不需要这么多的变化了。 singlepri=parseFloat(singlepri); var carpria=inputNumb*singlepri;//计算总价 $(this).parent().parent().siblings().find('.cartProductItemSmallSumPrice').text('¥'+carpria.toFixed(2)); total(); }) $('.numberMinus').click(function(){ var inputNum1=$(this).siblings('input.orderItemNumberSetting').val(); inputNum1--; if(inputNum1<1){ inputNum1=1; } $(this).siblings('input.orderItemNumberSetting').val(inputNum1); var inputNumb=$(this).siblings('input.orderItemNumberSetting').val(); //alert(carprib);3*5306 var singlepri=$(this).parent().parent().siblings().find('.cartProductItemPromotionPrice').text(); // alert(singlepri); singlepri=singlepri.substr(1); singlepri=singlepri.replace(/[^0-9.]/g, '');//非数字和.的替换 singlepri=parseFloat(singlepri); var carpria=inputNumb*singlepri;//计算总价 $(this).parent().parent().siblings().find('.cartProductItemSmallSumPrice').text('¥'+carpria.toFixed(2)); total(); }) }) //已选商品总价函数 function total(){ var selen=$('img.select').length; var price2=0; if(selen==0){ $('.cartTitlePrice').text("¥0.00"); $('.cartSumPrice').text("¥0.00"); } for(var i=0;i<selen;i++){ var price1=$('img.select').eq(i).parent().siblings().find('.cartProductItemSmallSumPrice').text(); price1=price1.substr(1); price1=price1.replace(/[^0-9.]/g, '');//非数字和.的替换 price1=parseFloat(price1); price2=price2+price1; /*price1+=price1;*/ console.log(price2); $('.cartTitlePrice').text("¥"+price2); $('.cartSumPrice').text("¥"+price2); } }

代码比较繁琐,自己的水平不是很高,会有考虑不周的地方,有问题请指出!

 

posted @ 2017-04-28 14:01  freeah  阅读(1107)  评论(0编辑  收藏  举报