我收到错误" Uncaught RangeError:超出最大调用堆栈大小"在铬。这是我的jQuery函数
$(window).scroll(function(){
if ($(this).scrollTop() < 170) {
$('#main-nav').css('position', '');
$('#fixed-header-icon').slideUp().addClass('remove');
if ($('.ajelnews').length > 0) {
$('.main-nav').removeClass('relative');
$('.main-nav').css('top', '');
}
if (!$('#main-nav').hasClass('main-nav')) {
$('#main-nav').removeClass("fixed-true");
$(".close-fixed-header").css('display', 'none');
}
}
});
来自此行$(".close-fixed-header").css('display', 'none');
答案 0 :(得分:1)
$(window).scroll(function(){
if ($(this).scrollTop() < 170) {
$('#main-nav').css('position', '');
$('#fixed-header-icon').slideUp().addClass('remove');
if ($('.ajelnews').length > 0) {
$('.main-nav').removeClass('relative');
$('.main-nav').css('top', '');
}
if (!$('#main-nav').hasClass('main-nav')) {
$('#main-nav').removeClass("fixed-true");
$(".close-fixed-header").css('display', 'none');
}
}
});
因为您正在为正在执行slideUp的滚动函数添加一个侦听器,这会导致window.scroll位置发生更改。哪个inturn导致循环并进入无限循环。
您正在处理错误的位置。而另一种机会是你改变元素的显示属性。
更改显示位置时会发生什么?
当css属性对任何元素说display:none
时,该特定元素将出现视图树或渲染树。这意味着浏览器将从视图中删除该特定元素。
如果将其设置回display:block
,树会更改并将元素放回视图中。这会改变视图的高度和宽度,有时会导致滚动(取决于父级大小)。