Javascript 突出显示滚动条上的活动菜单项
我正在使用jQuery进行一页导航。我想要的是,当用户滚动时,突出显示的菜单将被更改。我想出了以下代码: HTMLJavascript 突出显示滚动条上的活动菜单项,javascript,jquery,css,Javascript,Jquery,Css,我正在使用jQuery进行一页导航。我想要的是,当用户滚动时,突出显示的菜单将被更改。我想出了以下代码: HTML 标题1 标题2 Donec sed odio dui。精英自由主义者,法雷特拉·奥古斯。 我不知道是谁干的,我不知道是谁干的。 莫里斯·德赖特 两人或两人在一起是因为他们在一起是因为他们在一起 欧盟福吉亚无法定权利。除圣奥卡塔铜矿场意外, 这是我的错,因为我的母亲是我的母亲。 所有人都能清楚地看到错误所在。 议程 多奈克·奎斯·森佩尔·麦格纳。短暂的
我不知道是谁干的,我不知道是谁干的。
莫里斯·德赖特
两人或两人在一起是因为他们在一起是因为他们在一起
欧盟福吉亚无法定权利。除圣奥卡塔铜矿场意外,
这是我的错,因为我的母亲是我的母亲。
所有人都能清楚地看到错误所在。
议程
多奈克·奎斯·森佩尔·麦格纳。短暂的欢乐时光。
普罗因·奎斯·厄罗斯·多洛。多内克·塞德·维尼纳提斯·埃尼姆。
加莱里杰
多奈克·奎斯·森佩尔·麦格纳。短暂的欢乐时光。
普罗因·奎斯·厄罗斯·多洛。多内克·塞德·维尼纳提斯·埃尼姆。
组织
多奈克·奎斯·森佩尔·麦格纳。短暂的欢乐时光。
普罗因·奎斯·厄罗斯·多洛。多内克·塞德·维尼纳提斯·埃尼姆。
联系
标题1
标题2
Donec sed odio dui。精英自由主义者,法雷特拉·奥古斯。
JS
//更新当前项目类
函数setActiveListElements(事件){
var windowPos=$(window.scrollTop();
$('#主NAVA[href^=“#”]”)。每个(函数(){
var currentLink=$(此);
var refElement=$(currentLink.attr(“href”);
if(refElement.position()窗口位置){
$('a').removeClass(“当前”);
currentLink.addClass(“当前”);
}
否则{
currentLink.removeClass(“当前”);
}
});
}
//滚动条上的更新菜单项
$(窗口)。滚动(函数(){
//调用函数
setActiveListElements();
});
这段代码的问题是我收到了错误:uncaughttypeerror:无法读取未定义的
的属性“top”
我还没有找到解决办法。以下是答案:
// The id of the section we want to go to.
var anchorId = $(this).attr("href");
// Our scroll target : the top position of the
// section that has the id referenced by our href.
if (anchorId.length > 1 && $(anchorId))
{
var target = $(anchorId).offset().top - offset;
}
else
{
var target = 0;
}
当链接只有#
时,就没有锚定。它指的是页面的顶部,但没有附加锚元素。因此,获取未定义的顶点是不可能的。此代码现在检查href
长度是否大于1(例如:#test
),以及页面上是否有具有实际id的元素。如果是,则计算偏移量,如果不是,则将偏移量设置为0
。也就是说,返回到页面顶部
事实上,相同类型的答案适用于突出问题。它使用home
nav按钮选择文档,因为它没有链接到节元素。jQuery不会返回有效的选择,并且position()
将失败
function setActiveListElements(event){
var windowPos = $(window).scrollTop();
$('#primary-navwrapper li a[href^="#"]').each(function() {
var currentLink = $(this);
if ($(currentLink.attr("href")).length > 0)
{
var refElement = $(currentLink.attr("href"));
if (refElement.position().top <= windowPos && (refElement.position().top + refElement.height() + $("#primary-navwrapper").height() ) > windowPos) {
$('#primary-navwrapper li a').removeClass("current");
currentLink.addClass("current");
}
else{
currentLink.removeClass("current");
}
}
});
}
函数setActiveListElements(事件){
var windowPos=$(window.scrollTop();
$('#主NAVA[href^=“#”]”)。每个(函数(){
var currentLink=$(此);
如果($(currentLink.attr(“href”)).length>0)
{
var refElement=$(currentLink.attr(“href”);
if(refElement.position().top windowPos){
$('a').removeClass(“当前”);
currentLink.addClass(“当前”);
}
否则{
currentLink.removeClass(“当前”);
}
}
});
}
再次检查选定图元是否有链接的截面图元,如果有,请继续
如果没有HTML,这是很困难的。但是
position()
返回未定义的某个位置。请参阅更新的问题。我真的希望这些不是手动注释。导航链接已经起作用了。唯一的问题是它不会更新突出显示的类。。。所以这篇文章不需要上面的代码。@Caspert好吧,如果我点击主页按钮,我会得到uncaughttypeerror:cannotrea
// The id of the section we want to go to.
var anchorId = $(this).attr("href");
// Our scroll target : the top position of the
// section that has the id referenced by our href.
if (anchorId.length > 1 && $(anchorId))
{
var target = $(anchorId).offset().top - offset;
}
else
{
var target = 0;
}
function setActiveListElements(event){
var windowPos = $(window).scrollTop();
$('#primary-navwrapper li a[href^="#"]').each(function() {
var currentLink = $(this);
if ($(currentLink.attr("href")).length > 0)
{
var refElement = $(currentLink.attr("href"));
if (refElement.position().top <= windowPos && (refElement.position().top + refElement.height() + $("#primary-navwrapper").height() ) > windowPos) {
$('#primary-navwrapper li a').removeClass("current");
currentLink.addClass("current");
}
else{
currentLink.removeClass("current");
}
}
});
}