iha*_*ake 11 javascript jquery event-handling
有没有一种方法在javascript中将事件处理程序绑定到水平滚动,而不是在用户水平和垂直滚动时触发的通用滚动事件?我想只在用户水平滚动时才触发事件.
我四处寻找这个问题的答案,但似乎找不到任何东西.
谢谢!
PS如果我错误地使用了某些术语,我很抱歉.我对javascript很新.
UPDATE
非常感谢您的所有答案!总之,看起来你们都说javascript中不支持这个,但是我可以用这样的东西来完成这个功能(使用jQuery)(jsFiddle):
var oldScrollTop = $(window).scrollTop();
$(window).bind('scroll', function () {
if (oldScrollTop == $(window).scrollTop())
//scrolled horizontally
else {
//scrolled vertically
oldScrollTop = $(window).scrollTop();
}
});?
Run Code Online (Sandbox Code Playgroud)
这就是我需要知道的全部内容.再次感谢!
从我的手机回答,所以目前无法提供代码.
您需要做的是订阅滚动事件.垂直/水平没有特定的一个.
接下来,您需要获得有关当前显示区域的一些测量值.您需要测量window.clientHeight和window.clientWidth.
接下来,获取window.top和window.left.这将告诉您视口的位置,即如果它大于0则使用滚动条.
从这里获得你需要的东西是非常简单的数学.如果没有其他人在接下来的几个小时内提供了代码示例,我会尝试这样做.
编辑:更多信息.
您必须捕获滚动事件.您还需要在某处存储初始window.top和window.left属性.每当滚动事件发生时,请进行简单检查以查看当前的顶部/左侧值是否与存储值不同.
此时,如果其中任何一个不同,您可以触发自己的自定义事件以指示垂直或水平滚动.如果您使用的是jQuery,这非常简单.如果你在没有图书馆帮助的情况下编写js,那么它也很容易,但更多一些.
在js中进行一些事件调度搜索.
然后,您可以编写要订阅自定义事件的任何其他代码,而无需将它们与方法调用绑定在一起.
| 归档时间: |
|
| 查看次数: |
16659 次 |
| 最近记录: |