nav.js 2.97 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,
        tap: true,
        eventPassthrough: true,
        preventDefault: true
    });

    return {
        goto: scroll
    };
}

// 获取url中的参数
function getUrlParam(name, url) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); // 构造一个含有目标参数的正则表达式对象
    var urlTest = url || window.location.href;
    var r = urlTest.slice(urlTest.indexOf('?') + 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
            });
        } else if ($(this).find('a').text() === WILL_BEGIN) {
            $(this).attr({
                'data-nav': 'other'
            });
        }
    });
}

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

    // console.log(index)

    // 判断是否有首页选项
    var flag = false;

    $nav.find('li').each(function() {
        var $this = $(this);
        var url = $this.find('a').attr('href');
        var code = getUrlParam('content_code', url);

        if (code === 'c19ffa03f053f4cac3690b22c8da26b7') {
            flag = true;
            return false;
        }

    });
    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 {
        if (!flag) {
            index -= 1;
        }
        $nav.find('li:not([data-nav="other"])').eq(index).addClass('active').siblings().removeClass('active');
    }

}

activeNav();


module.exports = initNavScroll;