因此,我想在特定条件下关闭jQuery事件(如果用户向下滚动),但如果他们做相反的操作(向上滚动),那么我希望事件打开,这样它就会触发。
这是我的代码,但由于我是jQuery的新手,我非常确定我在处理程序中遗漏了什么-我只是不知道它应该是什么。
代码如下:
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;
});
}
发布于 2015-07-05 23:56:49
尝试使用if-else语句,而不是两个if
发布于 2015-07-05 23:58:40
$(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“。
document.ready
事件后添加滚动处理程序:$( /* (){/*你的代码在这里*/ });
if (scroll <位置){//向上滚动处理程序();}
发布于 2015-07-06 02:28:35
更新3:将来你可以这样做。
var nT = $(window).scrollTop, pos = nT(), func = function(e){ /*code here*/ };
$(window).scroll(()=>(nT()<pos)&&(pos=nT(),func())); //make people hate you.
更新2:,为了让它更小..
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;
});
https://stackoverflow.com/questions/31231958
复制相似问题