在twitter bootstrap中重新加载当前活动选项卡

时间:2013-02-27 13:20:43

标签: jquery twitter-bootstrap

我正在关注如何使用以下方式重新加载当前活动标签的this recommendation

$('#tab-loaded-content').load($('li.active a[data-toggle="tab"]').attr('href'));

但是当我尝试这个时,结果是它加载了最初激活的选项卡(在我的html中定义为活动选项卡)而不是当前活动选项卡。 所以我正在寻找一些帮助来弄清楚如何做到这一点。

以下是我的问题的简化版本:

<!DOCTYPE html>
  <html>
    <head>
      <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel="stylesheet">
    </head>
  <body>
    <div class="tabbable">      
      <ul id="mainTabs" class="nav nav-tabs">
        <li class="active"><a href="#tabWelcome" data-toggle="tab">Home</a></li>
        <li><a href="#tabProject" data-toggle="tab">Project</a></li>
        <li><a href="#tabEmail" data-toggle="tab">Invite Friends</a></li>
        <li><a href="#tabProfile" data-toggle="tab">My Profile</a></li>
      </ul>
      <div class="tab-content">
        <div class="tab-pane active" id="tabWelcome">
          welcome
        </div>
        <div class="tab-pane" id="tabProject">
          project
        <button id="button" class="btn">Create Project</button>
      </div>
      <div class="tab-pane" id="tabEmail">
        email
      </div>
        <div class="tab-pane" id="tabProfile">
          profile
        </div>
      </div>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>
<script>
    document.getElementById("button").addEventListener("click", function() {
        $('#mainTabs').load($('li.active a[data-toggle="tab"]').attr('href'));
    }, false);
</script>
</body>
</html>

这个想法是当点击第二个标签上的“项目”按钮时,它应该重新加载该标签,但它会重新加载“欢迎”标签。

任何建议表示赞赏!

1 个答案:

答案 0 :(得分:4)

我必须实现一个非常相似的功能。

基本上你需要掌握当前标签'停用'并再次显示它。

$(document).on('click', '#refresh', function () {
    var $link = $('li.active a[data-toggle="tab"]');
    $link.parent().removeClass('active');
    var tabLink = $link.attr('href');
    $('#mainTabs a[href="' + tabLink + '"]').tab('show');
});

请参阅我的jsFiddle了解工作演示。

请注意,该演示使用的是Bootstrap 3,因此使用shown.bs.tab事件来显示标签加载时的时间。