URL Target Link选项卡 - Zurb Foundation选项卡

时间:2014-01-26 05:07:16

标签: javascript jquery zurb-foundation

我目前正在使用Zurb Foundation Tabs进行小型项目。选项卡工作得很好,但在尝试将目标指向特定选项卡时,我遇到了问题。我搜索并找到了一种获取此方法的方法,但在修改并将其应用于我的示例时,它无法正常工作。我收到错误:“无法识别的表达式:: nth-child”。如何正确地链接到Foundation 5中的特定选项卡? DEMO

JS / JQuery for url target

<script>
window.navigateTab = function (event) {
    var url = $(event.target).attr('href');
    var target = url.split('#')[1];
    if (target.substr(0, 5) == 'panel') {
      var state = {
          tab: target.substr(5)
      };
      selectTab("tabs_edit", state.tab); //<-- change the tab
      history.pushState(state, null, url); //<-- change the url
      event.preventDefault();
    }
    }

    window.onpopstate = function (event) {
      if (event.state != null) {
          selectTab("tabs_edit", event.state.tab); //<-- change the tab
      }
    };

    function selectTab(id, tab) {
      // activate only the right tab:
      var tab = $("#" + id + "> dl > dd:nth-child(" + tab + ")");
      console.log(tab);
      var a = $("a", tab);
      target = $('#' + a.attr("href").split('#')[1]);
      siblings = tab.siblings();
      settings = tab.closest('[data-tab]').data('tab-init');

      tab.addClass(settings.active_class);
      siblings.removeClass(settings.active_class);
      target.siblings().removeClass(settings.active_class).end().addClass(settings.active_class);
    }

    $('#menu a').on("click", navigateTab);
    $(document).foundation();
</script>

HTML

      //Target an specific tab:
       <ul id="menu" class="dropdown">
            <li><a href="#panel1a">Tab 1</a></li>
            <li><a href="#panel2a">Tab 2</a></li>
            <li><a href="#panel3a">Tab 3</a></li>
        </ul>
        //Actual Tabs
            <dl id="tabs_edit" class="tabs vertical" data-tab>
              <dd class="active"><a  href="#panel1a" onclick="navigateTab(event)">Tab 1</a></dd>
              <dd><a href="#panel2a" href="#panel2a" onclick="navigateTab(event)">Tab 2</a></dd>
              <dd><a href="#panel3a" href="#panel3a" onclick="navigateTab(event)">Tab 3</a></dd>
              <dd><a href="#panel4a" href="#panel4a" onclick="navigateTab(event)">Tab 4</a></dd>
            </dl>
            <div class="tabs-content vertical">
              <div class="content active" id="panel1a">
                <p>Panel 1 content goes here.</p>
              </div>
              <div class="content" id="panel2a">
                <p>Panel 2 content goes here.</p>
              </div>
              <div class="content" id="panel3a">
                <p>Panel 3 content goes here.</p>
              </div>
              <div class="content" id="panel4a">
                <p>Panel 4 content goes here.</p>
              </div>
            </div>

2 个答案:

答案 0 :(得分:4)

我知道这篇文章已经过时了,但在阅读了基础5文本之后,他们又添加了可在不同页面上运行的深层链接功能

只需添加:

数据的选项=&#34; deep_linking:真&#34;

示例:

<dl class="tabs vertical" data-tab data-options="deep_linking:true">

这甚至适用于链接到它的不同页面!

对于其他页面上的链接,我刚刚调用了panelid

示例:

<a href="product-line.php#panel12">

答案 1 :(得分:3)

深度链接是基金会5没有包含在基金会4中的内容。我做了一个不那么聪明但完成工作的修复:

  if(window.location.hash){
                $('dl.tabs dd a').each(function(){
                    var hash = '#' + $(this).attr('href').split('#')[1];
                    if(hash == window.location.hash){
                        $(this).click();
                    }
                });
            }