good.js 2.05 KB
/**
 * 购物车商品
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2015/10/20
 */

var $ = require('jquery'),
    ellipsis = require('mlellipsis'),
    lazyLoad = require('yoho.lazyload');

var chosePanel = require('./chose-panel');

var $curDelPanel;

//删除面板显示后任何点击行为都将触发隐藏面板
function docTouchEvt() {
    $curDelPanel && $curDelPanel.addClass('hide');

    //
    $(document).off('touchstart', docTouchEvt);
}

ellipsis.init();

lazyLoad($('.lazy'));

$('.name')[0].mlellipsis(2);

//TIP:事件委托在.cart-goods,商品列表的容器统一需要有.cart-goods
$('.cart-goods').on('touchstart', '.checkbox', function() {
    var $this = $(this);

    if ($this.hasClass('icon-cb-checked')) {
        $this.removeClass('icon-cb-checked').addClass('icon-checkbox');
    } else {
        $this.removeClass('icon-checkbox').addClass('icon-cb-checked');
    }
}).on('touchstart', '.icon-edit', function() {
    var id = $(this).closest('.shopping-cart-good').data('id');

    $.ajax({
        type: 'GET',
        url: '/shoppingCart/goodinfo',
        data: {
            id: id
        },
        success: function(data) {
            if (data.code === 200) {
                chosePanel.show(data.data);
            }
        }
    });
}).on('touchstart', '.icon-del', function(e) {
    e.stopPropagation();

    //手动触发docTouchEvt清除因点击到del按钮上而被阻止冒泡到doc上的事件从而清除已打开的删除面板
    docTouchEvt();

    $curDelPanel = $(this).closest('.shopping-cart-good').children('.opt-panel').removeClass('hide');

    $(document).on('touchstart', docTouchEvt);
}).on('touchstart', '.opt-panel', function() {
    var $this = $(this),
        id = $this.closest('.shopping-cart-good').data('id'),
        url;

    if ($this.closest('.put-in-favorite').length > 0) {

        //移入收藏夹
        url = '/shoppingCart/col';
    } else {

        //删除
        url = '/shoppingCart/del';
    }

    $.ajax({
        type: 'POST',
        url: url,
        data: {
            id: id
        }
    });
});