hot-rank.js 2.45 KB
var $ = require('jquery'),
    Hammer = require('yoho.hammer'),
    Swiper = require('yoho.iswiper'),
    lazyLoad = require('yoho.lazyload'),
    loading = require('../../plugin/loading');

var page = 1,
    winH,
    hotnav,
    listTop,
    navSwiper,
    notab = 0,
    sort = '',
    id = '',
    noResult = '<p class="no-result">未找到相关搜索结果</p>';

function hotrank(page, sort, tabId, notab) {
    loading.showLoadingMask();
    $.ajax({
        type: 'GET',
        url: '/product/newsale/selectHotrank?' + sort,
        dataType: 'html',
        data: {
            page: page,
            tab_id: tabId,
            notab: notab
        },
        success: function(data) {
            if (page === 1) {
                $('.rank-main').remove();
            }
            if (data === ' ') {
                $('#hotRank').html(noResult);
            } else {
                $('#hotRank').append(data);
            }
            lazyLoad($('img.lazy'));
            $('.rank-main ul li:gt(2)').find('.item-content i').removeClass('top');
            winH = $(window).height();
            if ($('.rank-main').length !== 0) {
                $('#yoho-footer').css('position', 'static');
                listTop = $('.rank-main').find('ul').offset().top;
            } else {
                $('#yoho-footer').css('position', 'fixed');
            }
            navSwiper = new Swiper('.s-goods-nav', {
                grabCursor: true,
                slidesPerView: 'auto',
                slideElement: 'li'
            });
            loading.hideLoadingMask();
        }
    });
}

$(window).scroll(function () {
    if (page === 2) {
        return;
    }
    if ($(window).scrollTop() + winH < listTop + $('#hotRank').height() - 100) {
        return;
    }
    page = 2;
    notab = 1;
    hotrank(page, sort, id, notab);

});
hotrank(page, sort, id, notab);
hotnav = new Hammer(document.getElementById('hotRank'));
hotnav.on('tap', function (e) {
    var ev = ev || window.event;
    var target = ev.target || ev.srcElement;

    if (target.nodeName.toLowerCase() === 'span') {
        $('.s-goods-nav .nav-item').removeClass('active');
        target.parentNode.className = 'active ' + target.parentNode.className;
        id = target.getAttribute('data-id') ? target.getAttribute('data-id') : '';
        sort = target.getAttribute('data-sort') ? target.getAttribute('data-sort') : '';
        page = 1;
        notab = 1;
        hotrank(page, sort, id, notab);
    }
});