2017-02-16 8 views
2

ページにいくつかのタブがあり、ページが読み込まれたときにそのタブをアクティブに保ちようとしています。私は、URLにプッシュハッシュすることによって、これを実行します。ブートストラップタブが表示されました。ページ読み込み時に.bs.tabが起動しません。

$('.nav-tabs a[data-toggle="tab"]').click(function() { 
    window.history.pushState("", "", $(this).attr('href')); 
}); 

上記のコードで、私は、ユーザーがページをリロードする場合でも、タブアクティブに保ちます。

私はshown.bs.tabイベントをキャッチしようとしているが、どうやらイベントは、ページのリロードでトリガされていないが、他のタブが

$('.nav-tabs a[data-toggle="tab"]').on('shown.bs.tab', function() { 
    //do something 
}); 

私が間違ってやっている任意のアイデアをクリックされたときに、それは動作しますか?

編集

activeクラスは両方とも私も手動でtab.showイベントを呼び出すために試してみたlidiv.tab-pane

から削除されますが、それはあなたのことを確認してください

var hash = window.location.hash; 
if(hash) { 
    $('.nav-tabs a[href="' + hash + '"]').tab('show'); //or trigger('click') 
} 
+0

ページのロード時に「クリック」? 'shown.bs.tab'イベントを発生させるには' .tab( 'show') 'を呼び出す必要があると思います。 – ZimSystem

+0

いいえ、 '.tab( 'show')'または '.trigger( 'click')'を呼び出すとどちらも動作しません。私は質問を更新しました –

答えて

0

すでに示されたタブ上のイベントを発生しません.tab('show');のように思えます。

は、代わりに私が.trigger('shown.bs.tab');に置き換えたのだが、それが必要として働いているので、私のコードは次のようになります。

トリガされる何
var hash = window.location.hash; 
if (hash) { 
    $('.nav-tabs a[href="' + hash + '"]').trigger('show.bs.tab'); 
} 
0

助けにはなりませんshown.bs.tabハンドブックの前に付けてください。.tab('show')

// wire up shown event 
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 
    console.log("tab shown..."); 
}); 

// read hash from page load and change tab 
var hash = document.location.hash; 
var prefix = "tab_"; 
if (hash) { 
    $('.nav-tabs a[href="'+hash.replace(prefix,"")+'"]').tab('show'); 
} 

ブートストラップ4 - リロード上のアクティブなタブを選択し

コード:http://www.codeply.com/go/Yu8wbjeGMZ
デモ:http://www.codeply.com/render/Yu8wbjeGMZ#tab2

関連する問題