2015-07-20 88 views
1

我想打開特定的引導選項卡從單擊一個外部鏈接。如何避免滾動到頂部時打開引導標籤

<ul class="nav nav-tabs"> 
    <li><a href="#profile" data-toggle="tab">Profile</a></li> 
    <li><a href="#message" data-toggle="tab">Messages</a></li> 
</ul> 

<div class="tab-content"> 
    <div class="tab-pane" id="profile">Contents</div> 
    <div class="tab-pane" id="message">Contents</div> 
</div> 

// Out side link which is place on different page: 
<a href="index.php?p=edit-profile#profile">Profile Link From Outside</a> 

這是我嘗試過使用jQuery:

// Javascript to enable link to tab 
var url = document.location.toString(); 
if (url.match('#')) { 
    $('.nav-tabs a[href=#'+url.split('#')[1]+']').tab('show') ; 
} 

// Change hash for page-reload 
$('.nav-tabs a').on('shown.bs.tab', function (e) { 
    window.location.hash = e.target.hash; 
}) 

這是正確地打開我的標籤。但我的問題是,當它打開頁面滾動到頁面的頂部。有沒有辦法避免這個問題?

我把它與.scrollTop();並列,但我無法弄清楚。

添加.scrollTop();後,我的代碼看起來像這樣。

// Javascript to enable link to tab 
var url = document.location.toString(); 
if (url.match('#')) { 
    $('.nav-tabs a[href=#'+url.split('#')[1]+']').tab('show') ; 
} 

// Change hash for page-reload 
$('.nav-tabs a').on('shown.bs.tab', function (e) { 
    window.location.hash = e.target.hash; 
    $('html,body').scrollTop(300); 
}); 

任何想法將不勝感激。 謝謝。

+1

也許它滾動到標籤?如果是這種情況,您可以使用class更改id或防止鏈接的默認行爲。 – Marii

+0

嘗試在'shown.bs.tab'事件上添加'e.preventDefault();'。 – D4V1D

+0

[如何用jQuery停止默認鏈接點擊行爲]的可能重複(http://stackoverflow.com/questions/5632031/how-to-stop-default-link-click-behavior-with-jquery) – D4V1D

回答

0

我發現,Firefox的我只好也加入e.stopImmediatePropagation()

$('.nav-tabs li a').click(function(e){ 
    e.preventDefault(); 
    e.stopImmediatePropagation(); 
    $(this).tab('show'); 
}); 

希望這有助於

相關問題