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

当我从$(window).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)的现代浏览器上的scroll事件。 这可以用于任何动态元素。 由于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-


document.addEventListener('DOMMouseScroll', callbackFunction, false);

解决方案为Firefox; 对于其他浏览器,请参阅@roasted解决方案

链接地址: http://www.djcxy.com/p/95625.html

上一篇: Scroll event doesn't fire unless page moves

下一篇: How to synchronize the scroll offset of two elements during inertial scrolling