Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不满足条件时关闭滚动事件&;当条件满足时,请重新收听?_Javascript_Jquery_Events_Scroll_Event Handling - Fatal编程技术网

Javascript 如何在不满足条件时关闭滚动事件&;当条件满足时,请重新收听?

Javascript 如何在不满足条件时关闭滚动事件&;当条件满足时,请重新收听?,javascript,jquery,events,scroll,event-handling,Javascript,Jquery,Events,Scroll,Event Handling,我只想在必要时收听开/关滚动事件。至于现在,每次我关闭事件时,它都不会监听打开事件。作为下面代码的一个示例,我希望在不满足条件时关闭滚动事件,然后在满足条件时重新收听 $(窗口).on('scroll','dataapple',function(){ 常量滚动=$(窗口).scrollTop(); 常量高度=$(“[data apple]”)。outerHeight(); 常数偏移=52; 如果(滚动>偏移和滚动

我只想在必要时收听开/关滚动事件。至于现在,每次我关闭事件时,它都不会监听打开事件。作为下面代码的一个示例,我希望在不满足条件时关闭滚动事件,然后在满足条件时重新收听

$(窗口).on('scroll','dataapple',function(){
常量滚动=$(窗口).scrollTop();
常量高度=$(“[data apple]”)。outerHeight();
常数偏移=52;
如果(滚动>偏移和滚动<高度+偏移){
//听滚动
console.log('listen');
}否则{
//停止收听滚动
$(窗口).off('scroll','dataapple');
}
});
body{背景:小麦;最小高度:2000px;}
.apple{高度:200px;背景:红色;}


与其启用/禁用事件处理程序,为什么不在
滚动
处理程序中的
if
条件的相关部分中放置要执行的逻辑?但如果我在
$(窗口)中的
if
中执行逻辑。滚动
,如果未满足
,则即使在
的情况下,它仍将继续侦听滚动事件,对吗?这不是很昂贵吗?这取决于处理程序中的逻辑。如果考虑滚动性能,请考虑添加一个反跳,这意味着<代码> $(窗口)。(“滚动”,函数()){if(条件){//dot}}};<代码>正确的方法是什么?我不应该过分担心演出。谢谢@RoryMcCrossanWell,您仍然应该担心性能,因为在
滚动
事件中执行大量逻辑可能会导致UI结巴,但我想说的是,只有当它成为问题时才需要担心