我有一个平滑的页面滚动脚本,但需要它在与当前视图中的页面部分对应的链接中添加一个“活动”类。我知道有很多类似的帖子,但它们都只在链接本身被点击时才起作用。我希望在点击时不仅应用/删除活动类,但是当您使用鼠标滚轮向下滚动页面时,它也应该使用该方法在链接之间切换。
http://jsfiddle.net/pixeloco/sewcs4cr/
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - $('nav').height()
}, 1000);
return false;
}
}
(这个链接产生了我想要的结果,但是当我调整它以满足我的需求时,活动类开始跳跃......加上有一些似乎被定义但从未使用的东西会混淆我的非js-saavy大脑比平常更多:http://jsfiddle.net/cse_tushar/Dxtyu/141/)
答案 0 :(得分:1)
好的找到了一个解决方案,以防万一其他人一直在寻找类似的东西我希望这会有所帮助:http://jsfiddle.net/pixeloco/L57z4ntb/
function checkSectionSelected(scrolledTo){
var threshold = 30;
var i;
for (i = 0; i < sections.length; i++) {
var section = $(sections[i]);
var target = getTargetTop(section);
if (scrolledTo > target - threshold && scrolledTo < target + threshold) {
sections.removeClass("active");
section.addClass("active");
}
};
}
checkSectionSelected($(window).scrollTop());
$(window).scroll(function(e){
checkSectionSelected($(window).scrollTop())
});