滚动事件只有在页面移动后才会触发

问题描述 投票:5回答:2

我正在寻找一个从$(window).scrollTop == 0向上滚动时触发的事件。

如果您具有以下代码:

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

在文档$(window).scrollTop不变,该事件不会触发,但这并不意味着没有鼠标滚动输入。无论页面是否移动,我都希望在鼠标滚动时触发事件。

javascript jquery scroll jquery-events
2个回答
11
投票

似乎就像您在寻找什么:

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()方法。这是一个实现逻辑以获取文本区域滚动方向的示例:

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-


0
投票
document.addEventListener('DOMMouseScroll', callbackFunction, false);

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

© www.soinside.com 2019 - 2024. All rights reserved.