4

我正在遵循有关如何使用以下方法重新加载当前活动选项卡的建议:

$('#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>

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

任何建议表示赞赏!

4

1 回答 1

6

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

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

$(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事件来显示选项卡加载的时间。

于 2013-12-05T11:01:24.613 回答