微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 除非页面移动,否则滚动事件不会触发

当我从$(窗口)“向上”滚动时,我希望得到一个事件.scrollTop == 0.

如果您有以下代码

$(window).scroll(function(){
    console.log("scrolling")
});

在文档<窗口高度然后该事件永远不会触发因为$(window).scrollTop没有改变,但这并不意味着没有鼠标滚动输入.无论页面是否移动,我都希望在鼠标滚动时触发事件.

最佳答案
看起来像你在寻找:

http://jsfiddle.net/n8eVQ/

$(document).on('mousewheel DOMMouseScroll MozMousePixelScroll',function(event,delta) {
    console.log('mousewheel');
    //you Could trigger window scroll handler
    $(window).triggerHandler('scroll');
});

其他方式是在支持事件捕获阶段的现代浏览器上捕获滚动事件(IE> 8).这可以用于任何动态元素.由于jQuery没有实现捕获阶段,因此必须使用javascript addEventListener()方法.这里是一个实现逻辑的示例,用于获取textarea的滚动方向:

document.addEventListener('scroll',function (event) {
    var $elm = $(event.target);
    if ($elm.is('textarea')) { // or any other filtering condition
        // do some stuff
        var direction = $elm.scrollTop() > ($elm.data('scrollTop') || 0) ? "down" : "up";
        $elm.data('scrollTop',$elm.scrollTop());
        console.log('scrolling',direction);
    }
},true);

-DEMO-

原文地址:https://www.jb51.cc/jquery/428696.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐