jquery滚轮事件
jQuery 滚轮事件监听方法
使用 jQuery 监听鼠标滚轮事件可以通过 mousewheel 或 wheel 事件实现。不同浏览器对滚轮事件的命名可能不同,需注意兼容性处理。
基本事件绑定语法:
$(element).on('mousewheel wheel', function(event) {
// 事件处理逻辑
});
获取滚轮方向
通过事件对象的 originalEvent.deltaY 或 originalEvent.detail 属性判断滚轮方向:
$(window).on('mousewheel wheel', function(e) {
var delta = e.originalEvent.deltaY || e.originalEvent.detail;
if (delta > 0) {
console.log('向下滚动');
} else {
console.log('向上滚动');
}
});
阻止默认滚轮行为
需要阻止页面默认滚动时,使用 preventDefault():
$('#scrollArea').on('wheel', function(e) {
e.preventDefault();
// 自定义滚动逻辑
});
平滑滚动实现
结合滚轮事件实现自定义平滑滚动效果:
var scrolling = false;
$(window).on('mousewheel wheel', function(e) {
if (!scrolling) {
scrolling = true;
var delta = e.originalEvent.deltaY || 0;
$('html, body').stop().animate({
scrollTop: $(window).scrollTop() + (delta * 50)
}, 800, function() {
scrolling = false;
});
e.preventDefault();
}
});
兼容性注意事项
-
旧版 Firefox 使用
DOMMouseScroll事件,需额外绑定:$(element).on('DOMMouseScroll', handler); -
某些浏览器使用
detail值判断方向(Firefox):var delta = e.originalEvent.detail ? -e.originalEvent.detail : e.originalEvent.wheelDelta; -
移动端触摸屏没有滚轮事件,需使用
touchstart和touchmove事件模拟。
常用插件推荐
-
jQuery Mousewheel:专门处理跨浏览器滚轮事件
$('#element').mousewheel(function(event) { console.log(event.deltaX, event.deltaY, event.deltaFactor); }); -
jQuery scrollTo:实现复杂滚动效果

$.scrollTo(target, duration, options);






