找不到类时,Javascript隐藏导航



我有一段javascript代码,用于子菜单,当它触碰到顶部时,它会停留在视口中,当它碰到页脚时停止滚动。

脚本运行良好,但在不存在子菜单的页面上,主导航隐藏。。。有人知道为什么当在页面上找不到类时会出现这种冲突,导航将不可见。。。

代码:

$stick = $('.pm-sidebar-menu-container');
$foot = $('footer');
margin = 200;
offtop = $stick.offset().top - margin;
offbtm = $foot.offset().top - (margin * 2 + $stick.height());
$(window).scroll(function() {
scrtop = $(window).scrollTop();
if (scrtop > offtop && $stick.hasClass('natural')) {
$stick.removeClass('natural').addClass('fixed').css('top', margin);
}
if (offtop > scrtop && $stick.hasClass('fixed')) {
$stick.removeClass('fixed').addClass('natural').css('top', 'auto');
}
if (scrtop > offbtm && $stick.hasClass('fixed')) {
$stick.removeClass('fixed').addClass('bottom').css('top', offbtm + margin);
}
if (offbtm > scrtop && $stick.hasClass('bottom')) {
$stick.removeClass('bottom').addClass('fixed').css('top', margin);
}
});

但在不存在子菜单的页面上

您可以做的是,只在存在以下函数时执行该函数。假设子菜单类是.sub-menu。以这种方式更改代码:

if ($(".sub-menu").length > 0) {
$stick = $('.pm-sidebar-menu-container');
$foot = $('footer');
margin = 200;
offtop = $stick.offset().top - margin;
offbtm = $foot.offset().top - (margin * 2 + $stick.height());
$(window).scroll(function() {
scrtop = $(window).scrollTop();
if (scrtop > offtop && $stick.hasClass('natural')) {
$stick.removeClass('natural').addClass('fixed').css('top', margin);
}
if (offtop > scrtop && $stick.hasClass('fixed')) {
$stick.removeClass('fixed').addClass('natural').css('top', 'auto');
}
if (scrtop > offbtm && $stick.hasClass('fixed')) {
$stick.removeClass('fixed').addClass('bottom').css('top', offbtm + margin);
}
if (offbtm > scrtop && $stick.hasClass('bottom')) {
$stick.removeClass('bottom').addClass('fixed').css('top', margin);
}
});
}

最新更新