根据网址设置活动标签

时间:2013-09-04 10:01:29

标签: javascript jquery tabs

我有一个简单的选项卡式界面,可以在隐藏的div之间切换,并在单击时在相应的选项卡上设置活动状态。

当有人访问标签的网址时,它只会显示该标签的内容,这很好。

如果您直接访问该网址,我还需要设置该标签的有效状态。

我有网址,例如abc.com/index.html#gallery,abc.com/index.html#recipes等。

因此,如果您访问abc.com/index.html#recipes,则会突出显示配方选项卡。

我的代码在下面,提前感谢任何建议!

    $(function () {
var app = {
        vars: {
            gallery: $('#gallery'),
            tabContent: $('.tabs .tabContent'),
            nav: $('.tabs nav a')
        },
        events: function () {
            //tabs
            app.vars.nav.on('click', function (e) {
                var thisHash = $(this).attr('href');
                app.setHash(thisHash);
                e.preventDefault();
                $('nav a').removeClass('active');
                $(this).addClass('active');
            });

            //hashchange
            $(window).on('hashchange', function() {
                app.checkHash();
            });

        },
        checkHash: function () {
            var hash = app.getHash();

            if (hash == '') {
                app.vars.tabContent.hide();
                app.vars.gallery.show();
            } else {
                app.goTo(hash);
            }

        },
        getHash: function () {
            return window.location.hash;
        },
        setHash: function (id) {
            window.location.hash = id;
        },
        goTo: function (id) {
            app.vars.tabContent.hide();
            $(id).fadeIn();
        }
    }
app.events();
app.checkHash();


});

1 个答案:

答案 0 :(得分:0)

您需要修改goTo函数以在相关选项卡上设置active类。试试这个:

goTo: function (id) {
    app.vars.tabContent.hide();
    $(id).fadeIn();
    $('nav a[href="' + id + '"]').addClass('active').siblings().removeClass('active');
}