首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关闭后打开jQuery事件监听器

关闭后打开jQuery事件监听器
EN

Stack Overflow用户
提问于 2015-07-05 23:30:38
回答 3查看 755关注 0票数 3

因此,我想在特定条件下关闭jQuery事件(如果用户向下滚动),但如果他们做相反的操作(向上滚动),那么我希望事件打开,这样它就会触发。

这是我的代码,但由于我是jQuery的新手,我非常确定我在处理程序中遗漏了什么-我只是不知道它应该是什么。

代码如下:

代码语言:javascript
运行
复制
 function myFunction() {


var handler = function(e){
    //code here
}
var position = $(window).scrollTop();

$(window).scroll(function() {
    var scroll = $(window).scrollTop();
    if(scroll > position) {
         // scrolling downwards
         $(window).off("scroll", handler);  
         } 

       if(scroll < position) {
         //scrolling upwards
         $(window).on("scroll", handler); 
         hypeDocument.showPreviousScene(hypeDocument.kSceneTransitionPushTopToBottom, 1.1)
         }
    position = scroll;
});



}
EN

回答 3

Stack Overflow用户

发布于 2015-07-05 23:56:49

尝试使用if-else语句,而不是两个if

票数 1
EN

Stack Overflow用户

发布于 2015-07-05 23:58:40

代码语言:javascript
运行
复制
$(function()
{

var handler = function(e){
    // hypeDocument.showPreviousScene(hypeDocument.kSceneTransitionPushTopToBottom, 1.1)
    console.log('handler');
}

var position = $(window).scrollTop();

$(window).scroll(function() {
    var scroll = $(window).scrollTop();
    if (scroll > position) {
         // scrolling downwards
         // NOTHING
         } 

       if(scroll < position) {
         //scrolling upwards
         handler();
         }
    position = scroll;
});

});

打开控制台,每次向上滚动时,你都会在输出中看到"handler“。

  1. 您需要在document.ready事件后添加滚动处理程序:

$( /* (){/*你的代码在这里*/ });

  • 我认为你尝试订阅和取消订阅你的处理程序是错误的。你应该像你所做的那样确定滚动的方向。然后,如果方向正确,请联系您的管理员:

if (scroll <位置){//向上滚动处理程序();}

票数 1
EN

Stack Overflow用户

发布于 2015-07-06 02:28:35

更新3:将来你可以这样做。

代码语言:javascript
运行
复制
var nT = $(window).scrollTop,  pos = nT(), func = function(e){ /*code here*/ };

$(window).scroll(()=>(nT()<pos)&&(pos=nT(),func())); //make people hate you.

更新2:,为了让它更小..

代码语言:javascript
运行
复制
var newTop = $(window).scrollTop,  position = newTop(),
handler = function(e){ /*code here*/ };

$(window).scroll(function() {
    (newTop()<position)&&(position=newTop(),handler());
});

更新:或者你可以让它变得更好

代码语言:javascript
运行
复制
var newTop = $(window).scrollTop,  position = newTop();

var handler = function(e){
    //code here
};

$(window).scroll(function() {
    var scroll = newTop();
    if(scroll < position) handler();
    position = scroll;
});

使用布尔变量,而不是附加/分离事件。

代码语言:javascript
运行
复制
var disabled= false,
    newTop = $(window).scrollTop,
    position = newTop();

var handler = function(e){
    if (disabled) return;
    //code here
};


$(window).scroll(function() {
    var scroll = newTop();
    if(scroll > position) disabled=true;
    else disabled=false; 
    position = scroll;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31231958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档