【发布时间】:2013-09-23 16:20:19
【问题描述】:
如何在没有滚动条的情况下检查鼠标滚轮的移动?
$(document).mousewheel(function() {
clicker.html("a7a");
});
【问题讨论】:
标签: jquery scroll scrollbar mousewheel
如何在没有滚动条的情况下检查鼠标滚轮的移动?
$(document).mousewheel(function() {
clicker.html("a7a");
});
【问题讨论】:
标签: jquery scroll scrollbar mousewheel
【讨论】:
wheelDelta 出现在120 或-120 所以除法标准化这个值 - 但有谁知道为什么浏览器选择 120 作为值?
delta: $('#el').on('mousewheel', function(e, delta) { if(delta > 0) { /*up*/ } else { /*down*/ }})。见this answer。
使用此代码
$('#foo').bind('mousewheel DOMMouseScroll', function (event) {
if (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) {
//up
}
else {
//down
}
});
【讨论】:
'wheel' 事件而不是'mousewheel'。
而且,如果您根本不想使用任何插件(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/
【讨论】:
这只是对@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 来查看水平滚动,或者如果您正在制作一些疯狂的 3D 内容,则可以使用 deltaZ。
【讨论】: