链接到URL中的特定选项卡

时间:2016-04-28 16:49:26

标签: jquery tabs

我必须在某些页面上重新设置一些旧标签,而且我没有选择更新到jquery UI标签等 - 只是为了调整现有的jquery

$('#tabs').find('li').click(function(e){
    if (!$(this).hasClass("active")) {
        var tabNum = $(this).index();
        var nthChild = tabNum+1;
        $("ul#tabs li.active").removeClass("active");
        $(this).addClass("active");
        $("ul#tab li.active").removeClass("active");
        $("ul#tab li:nth-child("+nthChild+")").addClass("active");
    }
});

这适用于标签本身,但我希望能够从其他页面链接到特定标签 - 例如:yoursite.com/your-page#tab-3

如果您有任何想法,将非常感激 - 这里有CodePen:http://codepen.io/tincanben/details/zqmZjR/

2 个答案:

答案 0 :(得分:0)

利用哈希(就像您在链接中已经拥有的那样)。让您的页面链接传递url和哈希值(最好是每个选项卡的ID)。

yourPage.aspx%23yourTab

然后在yourPage.aspx的pageLoad上抓取" hash"值减去哈希值

var currModule = window.location.hash.substr(1, window.location.hash.length);

之后,您可以运行类似SetPageTab的函数来打开哈希值并显示相应的选项卡。

switch (currModule) {
    case "tab1":
        $("#aspTab1").show();
        break;
    case "tab2":
        $("#aspTab2").show();
        break;
    case "tab3":
        $("#aspTab3").show();
        break;
    case "tab4":
        $("#aspTab4").show();
        break;
}

答案 1 :(得分:0)

您可以使用load来异步加载感兴趣的页面,如:

$(function () {
  $('#tabs').find('li').click(function(e){
    if (!$(this).hasClass("active")) {
      var tabNum = $(this).index();
      var nthChild = tabNum+1;
      $("ul#tabs li.active").removeClass("active");
      $(this).addClass("active");
      $("ul#tab li.active").removeClass("active");
      $("ul#tab li:nth-child("+nthChild+")").addClass("active");
 
      // load the corresponding page
      var cacheObj = $("ul#tab li:nth-child("+nthChild+")");
      cacheObj.find('div.content').load('yoursite.com/your-page#' + cacheObj.attr('id'));
    }
  });
});
ul#tabs {
  list-style-type: none;
  padding: 0;
  float: left;
  margin: 0;
}
ul#tabs li {
  display: inline-block;
  background-color: #e1e1e0;
  padding: 7px 15px;
  cursor: pointer;
}
ul#tabs li:hover,
ul#tabs li.active {
  background-color: #fff;
}
ul#tab {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
ul#tab li {
  display: none;
}
ul#tab li.active {
  display: block;
}

ul#tab li .content {
  display: block;
  clear: both;
  padding: 1em;
}
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>

<ul id="tabs">
    <li><a href="#tab-1">Tab 1</a></li>
    <li><a href="#tab-2">Tab 2</a></li>
    <li><a href="#tab-3">Tab 3</a></li>
    <li><a href="#tab-4">Tab 4</a></li>
</ul>

<ul id="tab">
    <li class="active" id="tab-1">
        <div class="content">
            <h3>Tab 1 content</h3>
            <p>Text here1</p>
        </div>
    </li>
    <li id="tab-2">
        <div class="content">
            <h3>Tab 2 content</h3>
            <p>Text here2</p>
        </div>
    </li>
    <li id="tab-3">
        <div class="content">
            <h3>Tab 3 content</h3>
            <p>Text here3</p>
        </div>
    </li>
    <li id="tab-4">
        <div class="content">
            <h3>Tab 4 content</h3>
            <p>Text here4</p>
        </div>
    </li>
</ul>