2016-08-16 3 views
1

私は自分のアプリケーションでブートストラップのタブを使用していますが、ページがデフォルトのアクティブなタブで読み込まれたときにshown.bs.tabイベントがトリガーされないという難点があります。shown.bs.tabイベントがデフォルトのタブで動作しない

以下のコードでは、デフォルトのタブ(アクティブなクラスが追加されている)である「ホーム」という名前のタブがあります。ページの読み込み時に、私の "ホーム"タブのコンテンツは完全に表示されますが、そのタブに添付された 'displayed.bs.tab'イベントはトリガーされません。 「メニュー1」タブに移動して「ホーム」タブに戻ると、同じイベントが発生します。

<ul class="nav nav-tabs"> 
    <li class="active"><a data-toggle="tab" href="#home">Home</a></li> 
    <li><a data-toggle="tab" href="#menu1">Menu 1</a></li> 
</ul> 

<div class="tab-content"> 
    <div id="home" class="tab-pane fade in active"> 
    <h3>HOME</h3> 
    <p>Some content.</p> 
    </div> 
    <div id="menu1" class="tab-pane fade"> 
    <h3>Menu 1</h3> 
    <p>Some content in menu 1.</p> 
    </div> 
</div> 

<script> 
    $(document).ready(function(){ 
    $("a[href='#home']").on('shown.bs.tab', function (e) { 
     alert('tab shown'); 
    }); 
    }); 
</script> 

ページロード時にこのイベントトリガーを作成するにはどうすればよいですか?これの背後にある意図は、 "ホーム"タブの内容が動的であり、タブ上でトリガされるAjaxコールの応答が表示されます。

答えて

1

これを解決するには、HTMLから「アクティブ」クラスを削除し、デフォルトで表示するタブを選択するスクリプトを追加します。

以下は更新されたスクリプトです。

<script> 
    $(document).ready(function(){ 
     $("a[href='#home']").on('shown.bs.tab', function (e) { 
      alert('tab shown'); 
     }).tab('show'); 
    }); 
</script> 

このスクリプトでは、[ホーム]タブが表示されると、イベントが発生します。また、同じタブが他のタブからナビゲートされたときにトリガされます。

関連する問題