nav.js 2.39 KB
var $ = require('yoho-jquery'),
    IScroll = require('yoho-iscroll');

//var WILL_BEGIN = '即将开始';
var WILL_END = '即将结束';
var ONLINE_FORECAST = '上限预告';

// nav 滚动
function initNavScroll(opt) {
    var $navBox,
        iScroll,
        _default = {
            el: '.outlet-nav'
        },
        options;

    options = $.extend({}, _default, opt);
    $navBox = $(options.el);

    function scroll(index) {
        var $ele;

        $ele = $navBox.find('li').eq(index);
        if ($ele.length > 0) {
            setTimeout(function() {
                iScroll.scrollToElement($ele[0], 400);
            }, 1);
        }
    }

    iScroll = new IScroll($navBox[0], {
        scrollX: true,
        scrollY: false,
        mouseWheel: true,
        scrollbars: true,
        probeType: 3,
        preventDefault: true,
        click: true
    });

    return {
        goto: scroll
    };
}

// 获取url中的参数
function getUrlParam(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); // 构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  // 匹配目标参数

    // 返回参数值
    if (r !== null) {
        return decodeURIComponent(r[2]);
    } else {
        return null;
    }
}

// 获取创意生活和即将结束的index
function getOtherIndex() {
    $('#index_nav').find('li').each(function() {
        if ($(this).find('a').text() === ONLINE_FORECAST) {
            $(this).attr({
                'data-nav': 'other',
                'data-type': 3
            });
        } else if ($(this).find('a').text() === WILL_END) {
            $(this).attr({
                'data-nav': 'other',
                'data-type': 2
            });
        }
    });
}

// 选中顶部导航
function activeNav() {
    var $nav = $('#index_nav');
    var index = getUrlParam('yh_channel');

    getOtherIndex();
    if (index === null) {
        index = getUrlParam('type');
        if (index === null) {
            $nav.find('li:not([data-nav="other"])').eq(0).addClass('active').siblings().removeClass('active');
        } else {
            $nav.find('li[data-type=' + index + ']').addClass('active').siblings().removeClass('active');
        }
    } else {
        $nav.find('li:not([data-nav="other"])').eq(index).addClass('active').siblings().removeClass('active');
    }

}


activeNav();

module.exports = initNavScroll;