Window 调整大小功能未启动。如果调整大小小于然后大于,只是为了确保它仍然在内部执行上述功能

Window resize function not firing. Just to make sure it still does said function inside if resized less than and then above

当屏幕滚动到 550 像素以下时,我一直在处理粘性导航。 我已经使该功能正常工作但是当 window 调整到 992px 以下时它意味着停止粘性然后如果再次调整到高于它应该工作但如果我回到 992px 以下它保持粘性所以我相信调整大小是'工作。请参阅下面的代码:

    if ($(window).width() >= 992) {

    $(document).scroll(function () {
        var y = $(document).scrollTop(), //get page y value
            header = $(".menu-faq-nav-container");
        if (y >= 550) {
            header.css({position: "fixed", top: "0", right: "50px"});
        } else {
            header.css({position: "relative", right: "0"});
        }
    });
} else {}

$(window).resize(function () {

    if ($(window).width() >= 992) {

        $(document).scroll(function () {
            var y = $(document).scrollTop(), //get page y value
                header = $(".menu-faq-nav-container");
            if (y >= 550) {
                header.css({position: "fixed", top: "0", right: "50px"});
            } else {
                header.css({position: "relative", right: "0"});
            }
        });
    } else {}
});

有什么想法吗?

这个问题的主要问题是重复的事件绑定。每次调整大小时,您都在创建一个新的滚动事件绑定,前提是宽度大于您想要的最小值。这意味着它会以相同的方式多次处理每个滚动事件。这意味着您工作量太大,可能会导致问题。

此外,一旦您低于所需的最小宽度,这些滚动事件就不会消失。它们仍然存在。所以为了去除重复的滚动事件绑定,解决滚动事件处理程序在不应该处理的时候处理的问题,你应该考虑绑定一次滚动事件处理程序,并检查其中的 window 宽度。您不关心调整大小事件的哪一点。宽度要么超过您的最小宽度,要么不是。