Javascript 在多个元素上滚动时添加/删除类
我使用一个脚本(我可能在这里找到)在滚动时添加/删除元素上的类。脚本从菜单中关联href,以向页面中的相应元素添加/删除类。当使用一个菜单和一组元素时,脚本工作得很好,但我试图使它在多个菜单中可用,但我似乎找不到哪里出了问题。我在getTargetTop()函数中遇到了一个错误,但我无法解决它 以下是我正在使用的代码:Javascript 在多个元素上滚动时添加/删除类,javascript,jquery,html,Javascript,Jquery,Html,我使用一个脚本(我可能在这里找到)在滚动时添加/删除元素上的类。脚本从菜单中关联href,以向页面中的相应元素添加/删除类。当使用一个菜单和一组元素时,脚本工作得很好,但我试图使它在多个菜单中可用,但我似乎找不到哪里出了问题。我在getTargetTop()函数中遇到了一个错误,但我无法解决它 以下是我正在使用的代码: $(window).scroll(function(e){ checkSectionSelected($(window).scrollTop()); }); funct
$(window).scroll(function(e){
checkSectionSelected($(window).scrollTop());
});
function getTargetTop(elem){
console.log(elem.attr('href'));
var id = elem.attr("href");
var offset = 0;
return $(id).offset().top - offset;
}
var sections = $('ul.ctrl a');
var mainmenu = $('nav a');
function checkSectionSelected(scrolledTo){
var threshold = 100;
var i;
for (i = 0; i < sections.length; i++) {
var section = $(sections[i]);
var target = getTargetTop(section);
if (scrolledTo > target - threshold && scrolledTo < target + threshold) {
$('.char').removeClass('active');
$('.char'+section.attr('href')).addClass('active');
sections.parent('li').siblings('li').removeClass("active");
section.parent('li').addClass("active");
}
};
var m;
for (m = 0; m < mainmenu.length; m++) {
var link = $(mainmenu[m]);
var newTar = getTargetTop(link);
if (scrolledTo > newTar - threshold && scrolledTo < newTar + threshold) {
sections.parent('li').siblings('li').removeClass("active");
section.parent('li').addClass("active");
}
};
}
$(窗口)。滚动(功能(e){
checkSectionSelected($(窗口).scrollTop());
});
函数getTargetTop(elem){
console.log(elem.attr('href');
var id=elem.attr(“href”);
var偏移=0;
返回$(id).offset().top-offset;
}
变量部分=$('ul.ctrl a');
var主菜单=$('nav a');
已选择功能检查部分(滚动至){
var阈值=100;
var i;
对于(i=0;i目标-阈值和滚动到<目标+阈值){
$('.char').removeClass('active');
$('.char'+section.attr('href')).addClass('active');
节。父级(“li”)。兄弟级(“li”)。removeClass(“活动”);
第节。母公司(“li”).addClass(“主动”);
}
};
var-m;
对于(m=0;m新塔-阈值和滚动到<新塔+阈值(&C)){
节。父级(“li”)。兄弟级(“li”)。removeClass(“活动”);
第节。母公司(“li”).addClass(“主动”);
}
};
}
谢谢你的帮助 那么你的错误是什么?它应该记录在浏览器的控制台中。您应该研究如何使用.each()方法在jQuery元素中循环,而不是那种丑陋的for循环。