jquery 触发滚动事件一次



我有这个稍微复杂的代码。 从本质上讲,一旦用户向下滚动超过某个div的高度,它就会将对象的显示设置为none,更改一些CSS选择器并淡入元素。 当用户向上滚动超过相同高度时,else 语句应处理,项目应淡出,更改 CSS 选择器,然后通过将显示更改为可见选项来重新出现。 它这样做的原因是因为它将元素从静态更改为固定。 滚动到视口上无法再看到的静态元素后,它将设置为显示:无;和固定,以便它可以淡入视口上的固定元素。 反之亦然。 问题是,每次我滚动到指定高度以上时都会触发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("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");
}

这是一个解决方案 - 它不使用特殊事件绑定或任何东西,尽管通过检查类是否已设置来完成工作,因此没有理由多次触发事件。

最新更新