【发布时间】:2014-10-15 12:24:46
【问题描述】:
注意:使用引导程序
当锚点距离屏幕顶部 50 像素时,我想为菜单项分配“活动”类。这意味着我需要取消分配 js 中的活动类并分配一个新的。
这是我的菜单
<nav class="navbar navbar-default" data-spy="affix" data-offset-top="34">
<div class="container">
<div class="navbar-collapse collapse navbar-responsive-collapse" id="main-menu">
<ul class="nav navbar-nav">
<li id="whatbutton"><a href="#whatissm">What We Are</a></li>
<li id="whybutton"><a href="#whyusesm">Why Us</a></li>
<li id="offerbutton"><a href="#whatdoessmoffer">What We Offer</a></li>
<li id="contactbutton"><a href="#contactus">Contact Us</a></li>
</ul>
<ul class="nav navbar-nav pull-right">
<li><a href="#">Right Link</a></li>
</ul>
</div>
</div>
</nav>
这些是我的 h1
<h1 id="whatissm" name="whatissm"><span>sometexthere</span></h1>
<h1 id="whyusesm" name="whyusesm"><span>somtexthere</span></h1>
<h1 id="whatdoessmoffer" name="whatdoessmoffer"><span>sometexthere</span></h1>
<h1 id="contactus" name="contactus"><span>Contact Us</span></h1>
现在这就是我开始挣扎的地方......
从早期的帖子中我了解到我的 js 应该看起来像这样
<script>
//smooth scrolling
$(function() {
$('[data-toggle="popover"]').popover();
$('[title]').tooltip({container: 'body'});
});
$('a').click(function() {
var reduce = 150;
$('html, body').animate({
scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top - reduce
}, 500);
return false;
});
//Making class active by scrolling past it
$(window).scroll(function(){
var scrollTop = $(document).scrollTop();
var anchors = $('body').find('.anchor');
for (var i = 0; i < anchors.length; i++){
if (scrollTop > $(anchors[i]).offset().top - 50 && scrollTop < $(anchors[i]).offset().top + $(anchors[i]).height() - 50) {
$(anchors[i]).addClass('active');
} else {
$(anchors[i]).removeClass('active');
}
}
});
</script>
但不幸的是,该代码对我不起作用。 1)它不会取消分配活动类 2)它只是不工作。
编辑:类似于http://getbootstrap.com/css/(当您滚动右侧菜单中的活动类时)
Edit2:添加了我的向下滚动活动效果的代码...我对 js 还很陌生,所以我可能以某种方式实现了错误。
【问题讨论】:
-
替换 #target1,向我们展示您的实际代码 - 如果没有它,您将如何选择已发布的元素是很棘手的。
-
马上更新
-
@Pete 是的!但是当我将它复制到我的脚本标签中时,它不适用于我的网站......再次,我对 js 非常陌生,所以在这个阶段我有点需要我的手:(一直试图摆弄你的代码但是无法让它工作......
-
好的,所以您需要更改顶部声明的选择器以匹配您的 html - see this example with your html structure。部分 div 代表容器(我猜你还有其他内容与
h1s)。如果您只想突出显示菜单项而不是 h1,try this
标签: javascript jquery twitter-bootstrap menu scroll