0

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

当有人访问选项卡的 url 时,它只显示该选项卡的内容,这很好。

如果您直接访问该网址,我还需要它设置该选项卡的活动状态。

我有网址,例如 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();


});
4

1 回答 1

0

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

goTo: function (id) {
    app.vars.tabContent.hide();
    $(id).fadeIn();
    $('nav a[href="' + id + '"]').addClass('active').siblings().removeClass('active');
}
于 2013-09-04T14:30:12.997 回答