Bootstrap 3 Scrollspy删除活动状态

erh*_*h86 5 jquery twitter-bootstrap scrollspy

我有一个使用带有scrollspy和固定标头的Bootstrap的站点.我有它工作正常,但滚动问题遇到了问题.页面上有几个部分不属于主导航.当您进入这些部分时,最新的"活动"链接仍然存在.最容易在小提琴中展示问题:

http://jsfiddle.net/eric1086/R7S9t/1/

<body data-spy="scroll" data-target=".main-nav">
<nav class="main-nav">
  <ul class="nav">
    <li><a href="#first">First</a></li>
    <li><a href="#second">Second</a></li>
    <li><a href="#third">Third</a></li>
    <li><a href="#fourth">Fourth</a></li>
    <li><a href="#fifth">Fifth</a></li>
  </ul>
</nav>

<section class="no-spy">
    Don't spy me!
</section>
<section class="block" id="first">
    First
</section>
etc...
Run Code Online (Sandbox Code Playgroud)

基本上我只希望当导航栏中的目标元素实际显示时显示活动状态.有任何想法吗?提前致谢!

Jav*_*avi 2

我也遇到了同样的情况,这就是我所做的。
我不知道这是否是最好的方法,但它确实有效。
这是小提琴中的代码: http://jsfiddle.net/ZGsPm/1/

您可以在忽略的部分所在的位置添加额外的列表项,并为它们添加一个类(示例中的“ignore”)和一个 id。

<body data-spy="scroll" data-target=".main-nav">
<nav class="main-nav">
  <ul class="nav">
    <li class="ignore"><a href="#no-spy-first"></a></li>
    <li><a href="#first">First</a></li>
    <li><a href="#second">Second</a></li>
    <li><a href="#third">Third</a></li>
    <li><a href="#fourth">Fourth</a></li>
    <li><a href="#fifth">Fifth</a></li>
    <li class="ignore"><a href="#no-spy-second"></a></li>
  </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

然后将相应的 id 添加到这些部分,以便您可以从列表项中引用它们。

<section class="no-spy" id="no-spy-first">
    Don't spy me!
</section>

<section class="block" id="first">
    First
</section>
...
<section class="no-spy last" id="no-spy-second">
    Don't spy me!
</section>
Run Code Online (Sandbox Code Playgroud)

最后,在 Javascript 中(在调用 rollspy 函数之后):

$('.ignore').css({'visibility':'hidden', 'width':'0%'});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!