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>

2番目のタブの[プロジェクト]ボタンをクリックすると、そのタブがリロードされますが、[ようこそ]タブがリロードされます。

アドバイスをいただければ幸いです。

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を参照してください。

デモではBootstrap3を使用しているため、shown.bs.tabイベントを使用してタブの読み込み時の時間を表示していることに注意してください。

于 2013-12-05T11:01:24.613 に答える