2010-07-06 144 views
11

我有一个函数,我用scroll()事件绑定,但事实是我想只有在垂直滚动(我也有一些水平滚动)情况下触发函数。jQuery中有垂直滚动事件

我没有在jQuery的文档中看到这种可能性,可能会有这样的诡计吗?

回答

11

没有特定事件,但您可以测试.scrollLeft()位置以查看它是否已从先前存储的位置移动。

事情是这样的:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft != currentLeft) { 
     prevLeft = currentLeft; 
     console.log("I scrolled horizontally."); 
    } 
}); 
+0

我不知道为什么,我甚至没有想到这一点。非常感谢,这正是我一直在寻找的。 (我只是用scrollTop(),因为它符合我的情况) – 2010-07-06 14:43:58

+0

@Michael - 不客气。 :O) – user113716 2010-07-06 14:46:46

0

这应该工作:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft === currentLeft) { 
     console.log("I scrolled vertically."); 
    } 
    else { 
     prevLeft = currentLeft; 
    } 
}); 
3

您还可以使用.scrollTop做一些针对性的垂直滚动事件。

var prevTop = 0; 
$(document).scroll(function(evt) { 
    var currentTop = $(this).scrollTop(); 
    if(prevTop !== currentTop) { 
     prevTop = currentTop; 
     console.log("I scrolled vertically."); 
    } 
}); 

Jquery .scrollTop()