我創建一個帶有導航欄的長頁面,使用引導nav-tabs,點擊導航欄打開它們各自的子導航欄(tab-content),導航內容然後錨點將您引導至頁面的某個位置並添加「活動」類。在滾動時,也會添加活動類以顯示頁面上的當前位置。添加活動的類到導航列表裏滾動
我的問題是,當我到達下一個導航選項卡的標籤內容時,導航列表li應該變爲活動狀態並顯示其標籤內容,就像當我物理單擊選項卡時一樣。如何使滾動條上的導航標籤頁激活?
爲了顯示我的問題,我已經做了的jsfiddle: https://jsfiddle.net/Felirou/qLwcm15a/14/
正如你可以看到,滾動頁面時,子菜單中的相應的錨(標籤內容)使用下面的jQuery的變得活躍。但是,當達到橙色/紫色時,導航標籤不會變爲活動狀態,但當您點擊它時,您會看到其內容已變爲活動狀態。
<!-- the navbar -->
<div class="row" id="navbar">
<ul class="nav nav-tabs">
<li id="navbarPresentation" class="active"><a data-toggle="tab" href="#menu1">Green/Blue</a></li>
<li id="navbarIntroduction"><a data-toggle="tab" href="#menu2">Orange/Purple</a>
</ul>
<!-- This is the sub-menu of the header, the tab-content -->
<div class="tab-content">
<div id="menu1" class="tab-pane fade in active">
<nav class="navbar-nav">
<a class="nav-item nav-link" href="#green"><h5>green</h5></a>
<a class="nav-item nav-link" href="#blue"><h5>blue</h5></a>
</nav>
</div>
<div id="menu2" class="tab-pane fade">
<nav class="navbar-nav">
<a class="nav-item nav-link" href="#orange"><h5>orange</h5></a>
<a class="nav-item nav-link" href="#purple"><h5>purple</h5></a>
</nav>
</div>
</div>
</div>
// onScroll event for the sub nav also called the tab-content
$(document).on("scroll", onScroll);
function onScroll(event){
var scrollPos = $(document).scrollTop();
$('.tab-content a').each(function() {
var currLink = $(this);
var refElement = $(currLink.attr("href"));
if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
$('.tab-content a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
}
我已經嘗試了很多不同的東西,所以我不知道哪個失敗的嘗試後。但我想我必須用parent()或者一些布爾型的true/false來爲li添加一個類,但我似乎無法使它工作。有人能幫助我或指出我的方向嗎?
提前,非常感謝!
你可以請張貼html。有關未來的問題,請關注[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 –
我把它清理了一下,並添加了一個jsfiddle,這將做的HTML所要求? :-) – Felirou