maybe-like.js 2.33 KB
/**
 * “你可能喜欢”模块JS
 * @author: liangzhifeng<zhifeng.liang@yoho.cn>
 * @date: 2015/10/12
 */

var $ = require('yoho.zepto'),
    tip = require('../plugin/tip'),
    lazyLoad = require('yoho.zeptolazyload');

var winH = $(window).height(),
    loadMoreH = $('#load-more').height(),
    $goodList = $('#goods-list'),
    loading = false,
    page = 0,
    gender = $('.mobile-wrap').hasClass('boys-wrap') ? '1,3' : '2,3',
    kidsType = $('.mobile-wrap').hasClass('kids-wrap') ? true : false,
    lifestyleType = $('.mobile-wrap').hasClass('lifestyle-wrap') ? true : false,
    num,
    url;

var $curNav,
    index,
    $navList = $('#maybe-like-nav');

//ajax url
if (kidsType) {
    url = '/product/recom/maylikekids';
} else if (lifestyleType) {
    url = '/product/recom/maylikelife';
} else {
    url = '/product/recom/maylike?gender=' + gender;
}

$curNav = $navList.children('.focus');

$('#maybe-like-nav').delegate('li', 'tap', function() {
    var $this = $(this),
        $goods = $('.goods-list'),
        $content;


    if ($this.hasClass('focus')) {
        return;
    }

    index = $this.index();

    $this.addClass('focus');
    $curNav.removeClass('focus');

    $goods.not('.hide').addClass('hide');
    $content = $goods.eq(index);
    $content.removeClass('hide');

    $curNav = $this;

    $(document).trigger('scroll'); //Trigger lazyLoad
});

//srcoll to load more
$(window).scroll(function () {
    if ($(window).scrollTop() + winH >= $(document).height() - loadMoreH) {
        if (loading) {
            return;
        }
        loading = true;
        num = $goodList.children('.good-info').length;
        $.ajax({
            type: 'GET',
            url: url,
            data: {
                page: page + 1
            },
            success: function(data) {
                if (data === ' ') {
                    loading = true;
                    return;
                }
                $goodList.append(data);

                //lazyLoad
                //lazyLoad($goodList.children('.good-info:gt(' + (num - 1) + ')').find('img.lazy'));
                lazyLoad($('.good-info').find('img.lazy'));

                loading = false;
                page++;
            },
            error: function() {
                tip.show('网络断开连接了~');
                loading = false;
            }
        });
    }

});