使用jQuery检查鼠标滚轮事件而不滚动条

时间:2013-09-18 18:57:26

标签: jquery scroll scrollbar mousewheel

如何在没有滚动条的情况下检查鼠标滚轮移动?

$(document).mousewheel(function() {
     clicker.html("a7a");
});

4 个答案:

答案 0 :(得分:28)

我强烈建议您使用此jQuery插件:PLUGIN

如果没有插件,请尝试以下示例:EXAMPLE

<强> HTML:

<div id='foo' style='height:300px; width:300px; background-color:red'></div>

<强>使用Javascript:

$('#foo').bind('mousewheel', function(e) {
    if(e.originalEvent.wheelDelta / 120 > 0) {
        alert('up');
    } else {
        alert('down');
    }
});

div上没有滚动条,但检测到滚轮事件。

答案 1 :(得分:8)

使用此代码

$('#foo').bind('mousewheel DOMMouseScroll', function (event) {           
     if (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) {
          //up
     }
     else {
          //down
     }
});

答案 2 :(得分:7)

而且,如果您根本不想使用任何插件(IE8,Chrome,Firefox,Safari,Opera ......),请执行以下操作:

if (document.addEventListener) {
    document.addEventListener("mousewheel", MouseWheelHandler(), false);
    document.addEventListener("DOMMouseScroll", MouseWheelHandler(), false);
} else {
    sq.attachEvent("onmousewheel", MouseWheelHandler());
}


function MouseWheelHandler() {
    return function (e) {
        // cross-browser wheel delta
        var e = window.event || e;
        var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

        //scrolling down?
        if (delta < 0) {
            alert("Down");
        }

        //scrolling up?
        else {
             alert("Up");
        }
        return false;
    }
}

活生生的例子:http://jsfiddle.net/CvCc6/1/

答案 3 :(得分:1)

这只是@Aaron回答的更新,使用了新的“wheel”事件,如下所述:https://developer.mozilla.org/en-US/docs/Web/Events/wheel

$('#foo').on('wheel', function(e){
    if(e.originalEvent.deltaY < 0) {
        console.log('scrolling up !');
    } else{
        console.log('scrolling down !');
    }
});

您还可以使用deltaX查看水平滚动,或deltaZ如果您有一些疯狂的3D事情正在进行中。