Jquery触发滚动事件一次

Jquery触发滚动事件一次,jquery,Jquery,我有一个稍微复杂的代码。本质上,一旦用户向下滚动超过某个div的高度,它就会将对象的显示设置为“无”,更改一些CSS选择器并淡入元素。else语句应该处理当用户向上滚动超过相同高度时,项目应该淡出,更改CSS选择器,然后通过将display更改为可见选项重新显示。它之所以这样做,是因为它正在将元素从静态更改为固定。滚动经过视口中不再可见的静态元素后,该元素将设置为显示:无;和固定,以便它可以作为视口中的固定元素淡入。反之亦然。问题是,每次我滚动到指定高度以上时,都会触发onscroll事件,导致

我有一个稍微复杂的代码。本质上,一旦用户向下滚动超过某个div的高度,它就会将对象的显示设置为“无”,更改一些CSS选择器并淡入元素。else语句应该处理当用户向上滚动超过相同高度时,项目应该淡出,更改CSS选择器,然后通过将display更改为可见选项重新显示。它之所以这样做,是因为它正在将元素从静态更改为固定。滚动经过视口中不再可见的静态元素后,该元素将设置为显示:无;和固定,以便它可以作为视口中的固定元素淡入。反之亦然。问题是,每次我滚动到指定高度以上时,都会触发onscroll事件,导致每次滚动时事件都会闪烁。我想要的是,对于每个事件,在通过指定的滚动高度时,对任意方向只触发一次。可能吗

(function($) {          
    $(document).ready(function(){   

        $(window).off().scroll(function(){

            if ($(this).scrollTop() > $("#carousel").outerHeight()) {

                $("#nav").css("display", "none");
                ...modifying css, etc etc
                $('#nav').fadeIn(500);

            } else {

                $('#nav').fadeOut(500); 
                ...modifying css, etc etc
                $("#nav").css("display", "static");

        }
    });
});

})(jQuery);
if($(this).scrollTop()>$(“#carousel”).outerHeight()和&$(“#nav”).hasClass(“topclass”)){
$(“#nav”).css(“显示”、“无”);
…修改css等
美元("资产净值").法代因(500美元),;
}else if($(this).scrollTop()<$(“#旋转木马”).outerHeight()&&$(“#导航”).hasClass(“bottomclass”)){
$(#nav')。淡出(500);
…修改css等
$(“#nav”).css(“显示”、“静态”);
}
这里有一个解决方案——它不使用特殊的事件绑定或任何东西,但是通过检查类是否已被设置来完成任务,因此没有理由多次触发事件

            if ($(this).scrollTop() > $("#carousel").outerHeight()) && $("#nav").hasClass("topclass")) {

                $("#nav").css("display", "none");
                ...modifying css, etc etc
                $('#nav').fadeIn(500);

            } else if ($(this).scrollTop() < $("#carousel").outerHeight() &&    $("#nav").hasClass("bottomclass")) {

                $('#nav').fadeOut(500); 
                ...modifying css, etc etc
                $("#nav").css("display", "static");

            }