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