最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

twitter bootstrap - Back-button navigation with nested tabs (using altered jquery-stickytabs) - Stack Overflow

programmeradmin3浏览0评论

This may be answering my own question, but I'm not sure. I'm using Bootstrap navs to have tabs on a page, with two primary tabs and several more tabs nested within one of those tabs. I want them to be directly linked with a hashtag and for the back button to navigate between them. Direct linking was easy to accomplish, but the back navigation didn't properly work: clicking the back button to go back from the primary tab without nested tabs to a nested tab (from 'Tab One One' to any 'Tab Two [One, Two, Three]' in the code I've shared) would change the hash but not open the desired tab.

I posted about this here, didn't get a reply, and couldn't find other code that would do this, until I found jquery-stickytabs, specifically the fork for nested tabs. It functions just as I would like, but, as coded, the resulting URLs are quite bulky, including the 'data-section' used to direct the 'data-target' (ie "#[data-section='section5']&[data-section='section5.3']"). That library is pretty old, so my query about whether this could be altered went understandably unanswered.

Thus, though I have nothing but the most passing understanding of javascript or jquery, did I fiddle around with it, and I appear to have got it to work as I wanted with simpler URLs. But, for my lack of experience I worry that maybe I've done something that I shouldn't have etc. Or, if not, for anyone else perhaps looking for this functionality I figured that I would share.

I have put the basic code in this codepen. It's coded as I've got it to work live, but the jfiddle doesn't run; perhaps due to the interaction of the href in the code? Or something I've done wrong but don't understand! Hence this question as well. And so I've also included what I changed below.

Thank you!

The only real alterations I made from the original were here, from this:

var showTabFromHash = function (hash) {
            var selector = hash ? 'a[' + settings.selectorAttribute + settings.selectorOperator + '"' + hash.split(settings.fragmentPathSeparator)[0] + '"]' : settings.initialTab;
            $(selector, context).tab('show');
            if (settings.backToTop === true) {
                setTimeout(backToTop, 1);
            }
            else if (hash) {
                var indexOfFirstFragmentPathSeparator = hash.indexOf(settings.fragmentPathSeparator);
                if (indexOfFirstFragmentPathSeparator > 0) {
                    var remainingHash = hash.substring(indexOfFirstFragmentPathSeparator + 1);
                    var element = document.getElementById(remainingHash);
                    if (element) {
                        scrollToElement($(element));
                    }
                    else {
                        showTabFromHash(remainingHash);
                    }
                }
            }
        };

to this:

var showTabFromHash = function (hash) {
            var selector = hash ? 'a[href="#' + hash.split(settings.fragmentPathSeparator)[0] + '"]' : settings.initialTab;
            $(selector, context).tab('show');
            if (settings.backToTop === true) {
                setTimeout(backToTop, 1);
            }
            else if (hash) {
                var indexOfFirstFragmentPathSeparator = hash.indexOf(settings.fragmentPathSeparator);
                if (indexOfFirstFragmentPathSeparator > 0) {
                    var remainingHash = hash.substring(indexOfFirstFragmentPathSeparator + 1);
                    var element = document.getElementById(remainingHash);
                    if (element) {
                        scrollToElement($(element));
                    }
                    else {
                        var selector2 = remainingHash ? 'a[href="#' + hash + '"]' : settings.initialTab;
                        $(selector2, context).tab('show');
                    }
                }
            }
        };

which allowed the nested tab href to go from this:

#[data-section='tabonetwo']&[data-section='tabtwothree']

to this:

#tabonetwo&tabtwothree
发布评论

评论列表(0)

  1. 暂无评论