Javascript 关闭后打开jQuery事件侦听器
因此,我想在特定条件下关闭jQuery事件(如果用户向下滚动),但如果他们做了相反的事情(向上滚动),那么我想打开该事件,这样它就会触发 这是我的代码,但由于我是jQuery新手,我很确定我在处理程序中遗漏了一些东西——我只是不知道它应该是什么 代码如下:Javascript 关闭后打开jQuery事件侦听器,javascript,jquery,scroll,jquery-events,Javascript,Jquery,Scroll,Jquery Events,因此,我想在特定条件下关闭jQuery事件(如果用户向下滚动),但如果他们做了相反的事情(向上滚动),那么我想打开该事件,这样它就会触发 这是我的代码,但由于我是jQuery新手,我很确定我在处理程序中遗漏了一些东西——我只是不知道它应该是什么 代码如下: function myFunction() { var handler = function(e){ //code here } var position = $(window).scrollTop(); $(window).
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;
});
}
函数myFunction(){
变量处理程序=函数(e){
//代码在这里
}
var position=$(window.scrollTop();
$(窗口)。滚动(函数(){
var scroll=$(窗口).scrollTop();
如果(滚动>位置){
//向下滚动
$(窗口).off(“滚动”,处理程序);
}
如果(滚动<位置){
//向上滚动
$(窗口).on(“滚动”,处理程序);
hypeDocument.showPrevious场景(hypeDocument.kSceneTransitionPushTopToBottom,1.1)
}
位置=滚动;
});
}
尝试使用if-else语句而不是两个if
$(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;
});
});
if (scroll < position) {
//scrolling upwards
handler();
}
if(滚动<位置){
//向上滚动
handler();
}
更新3:以后您可以这样做
var nT = $(window).scrollTop, pos = nT(), func = function(e){ /*code here*/ };
$(window).scroll(()=>(nT()<pos)&&(pos=nT(),func())); //make people hate you.
我该怎么做?对不起,我是新来的jQuery@Tushar我正在使用
$(窗口).on(“滚动”,处理程序)中的.on和.off方法我觉得你一直在试图做错事way@MuhammadUmer好的,你还有别的办法吗?我对jQuery了解不多,但基本上希望暂时禁用事件代码>然后在处理程序内部放入如果(禁用)返回代码>并且当您想要禁用时,只需执行disabled=true
,当返回到不禁用时disabled=false代码>谢谢,但是我在一个函数中运行javascript,然后在另一个函数中停止它。由于软件的限制,我不得不这样做。有什么办法可以用这个来做吗?谢谢教授,你的评论对我来说不是很清楚。请提供更多关于过程和功能的信息。基本上,我有两个“场景”,它们与我正在使用的软件中的页面类似。我在一个场景中运行javascript,它会在整个项目中继续运行,但基本上我想阻止滚动在单个场景中发生,所以使用了$(window).on(“滚动”)
停止向下滚动,但也会阻止向上滚动。看这些截图:我认为你不能用那种特殊的方式做你想做的事情。请提供您的场景的详细信息。我说得对吗?在场景1
中,您可以滚动到任何位置。当您进入场景2
时,您需要能够向上滚动,但不能向下滚动?您需要hypeDocument
中的更多信息来处理此问题。如果没有真正的代码,很难提供具体的代码示例。谢谢。将给它一个镜头,并让您知道它是如何进行的:)我如何确切地将变量设置为true?当您希望事件不触发时,disabled=true我对此有很大的困难。正如我所说,我是初学者,如果我能解释得更清楚一点,你能帮我吗?基本上,当用户试图向下滚动时,它应该什么也不做。考虑使用“关闭”来停止滚动方法。然后,如果他们向上滚动,他们可以这样做,事件将正常发生。
var nT = $(window).scrollTop, pos = nT(), func = function(e){ /*code here*/ };
$(window).scroll(()=>(nT()<pos)&&(pos=nT(),func())); //make people hate you.
var newTop = $(window).scrollTop, position = newTop(),
handler = function(e){ /*code here*/ };
$(window).scroll(function() {
(newTop()<position)&&(position=newTop(),handler());
});
var newTop = $(window).scrollTop, position = newTop();
var handler = function(e){
//code here
};
$(window).scroll(function() {
var scroll = newTop();
if(scroll < position) handler();
position = scroll;
});
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;
});