未捕获RangeError:最大调用堆栈大小超过chrome

时间:2016-11-28 11:12:42

标签: javascript jquery google-chrome

我收到错误" 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');

1 个答案:

答案 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,树会更改并将元素放回视图中。这会改变视图的高度和宽度,有时会导致滚动(取决于父级大小)。