当前位置: 首页 > news >正文

使用 jQuery 实现鼠标滚轮事件:监听向上/向下滑动

在 Web 开发中,鼠标滚轮事件wheel)常用于实现自定义滚动效果轮播图切换缩放元素等交互功能。虽然原生 JavaScript 可以轻松监听滚轮事件,但使用jQuery可以让代码更简洁、易读。本文将详细介绍如何使用 jQuery 监听鼠标滚轮的向上滑动向下滑动事件,并提供完整的代码示例。


1. jQuery 监听鼠标滚轮事件

jQuery 本身没有直接提供wheel事件的封装,但我们可以使用.on()方法监听原生 DOM 事件,并结合event.originalEvent获取滚轮数据(如deltaY)。

核心方法

$(document).on('wheel',function(event){constdeltaY=event.originalEvent.deltaY;if(deltaY<0){console.log('向上滚动');// 执行向上滚动的逻辑}elseif(deltaY>0){console.log('向下滚动');// 执行向下滚动的逻辑}});

说明

  • event.originalEvent是 jQuery 包装的原生 DOM 事件对象,包含deltaYdeltaX等属性。
  • deltaY < 0表示向上滚动deltaY > 0表示向下滚动
  • 可以使用event.preventDefault()阻止默认滚动行为(如页面滚动)。

2. 完整示例:使用 jQuery 实现轮播图切换

假设我们希望在滚动鼠标滚轮时切换轮播图,并阻止页面默认滚动行为:

HTML 结构

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>jQuery 鼠标滚轮事件示例</title><style>body{height:200vh;/* 模拟长页面 */margin:0;display:flex;justify-content:center;align-items:center;font-family:Arial,sans-serif;}.slider{width:500px;height:300px;background-color:#f0f0f0;border-radius:8px;display:flex;justify-content:center;align-items:center;font-size:24px;position:relative;overflow:hidden;}.slide{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;transition:transform 0.5s ease;}</style><!-- 引入 jQuery --><scriptsrc="https://code.jquery.com/jquery-3.6.0.min.js"></script></head><body><divclass="slider"><divclass="slide"style="background-color:#ffcccc;">Slide 1</div><divclass="slide"style="background-color:#ccffcc;">Slide 2</div><divclass="slide"style="background-color:#ccccff;">Slide 3</div></div><scriptsrc="script.js"></script></body></html>

JavaScript(jQuery)逻辑

$(document).ready(function(){const$slides=$('.slide');letcurrentSlide=0;// 初始化:只显示第一张幻灯片updateSlider();// 监听鼠标滚轮事件$(document).on('wheel',function(event){// 阻止默认滚动行为event.preventDefault();constdeltaY=event.originalEvent.deltaY;if(deltaY<0){// 向上滚动:上一张currentSlide=(currentSlide-1+$slides.length)%$slides.length;}elseif(deltaY>0){// 向下滚动:下一张currentSlide=(currentSlide+1)%$slides.length;}updateSlider();});functionupdateSlider(){$slides.each(function(index){$(this).css('transform',`translateY(${(index-currentSlide)*100}%)`);});}});

代码解析

  1. HTML 结构
    • 一个.slider容器,包含 3 张.slide幻灯片。
  2. CSS 样式
    • 使用position: absolute堆叠幻灯片。
    • transition实现平滑切换效果。
  3. jQuery 逻辑
    • $(document).ready()确保 DOM 加载完成后执行代码。
    • $(document).on('wheel', callback)监听滚轮事件。
    • event.originalEvent.deltaY获取滚动方向。
    • updateSlider()函数通过css('transform')切换幻灯片。

3. 兼容性处理

虽然现代浏览器都支持wheel事件,但旧浏览器(如 IE)可能使用mousewheel。如果需要兼容,可以额外监听mousewheel

$(document).on('wheel mousewheel',function(event){// 标准化 deltaY(mousewheel 的 delta 可能不同)constdelta=event.originalEvent.deltaY||-event.originalEvent.wheelDelta;if(delta<0){console.log('向上滚动');}elseif(delta>0){console.log('向下滚动');}});

说明

  • mousewheel事件的wheelDelta方向与wheel相反(wheelDelta > 0向上,< 0向下)。
  • 使用deltaY || -wheelDelta统一方向判断。

4. 实际应用场景

  1. 轮播图切换(如本文示例)。
  2. 滚动加载内容(如无限滚动列表)。
  3. 自定义滚动行为(如平滑滚动、视差效果)。
  4. 缩放元素(如图片查看器、地图)。

5. 总结

  • jQuery 监听滚轮事件:使用$(document).on('wheel', callback)
  • 获取滚动方向:通过event.originalEvent.deltaY判断(< 0向上,> 0向下)。
  • 阻止默认滚动:使用event.preventDefault()
  • 兼容旧浏览器:可额外监听mousewheel并标准化delta值。

完整代码(推荐)

$(document).ready(function(){$(document).on('wheel',function(event){event.preventDefault();// 阻止默认滚动constdeltaY=event.originalEvent.deltaY;if(deltaY<0){console.log('向上滚动');// 自定义逻辑(如切换上一张幻灯片)}elseif(deltaY>0){console.log('向下滚动');// 自定义逻辑(如切换下一张幻灯片)}});});

6. 扩展:使用 jQuery 插件简化滚轮事件

如果需要更复杂的滚轮交互,可以使用jQuery 滚轮插件(如 jQuery Mouse Wheel),它提供了更统一的 API 和更好的兼容性。

安装

npminstalljquery-mousewheel# 或直接引入 CDN<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script>

使用示例

$(document).mousewheel(function(event,delta){if(delta>0){console.log('向上滚动');}elseif(delta<0){console.log('向下滚动');}});

说明

  • delta > 0表示向上滚动,delta < 0表示向下滚动。
  • 插件已处理兼容性问题,无需额外标准化delta值。

7. 最终推荐方案

方案 1:原生 jQuery(推荐简单场景)

$(document).on('wheel',function(event){constdeltaY=event.originalEvent.deltaY;if(deltaY<0){console.log('向上滚动');}elseif(deltaY>0){console.log('向下滚动');}});

方案 2:jQuery Mouse Wheel 插件(推荐复杂场景)

$(document).mousewheel(function(event,delta){if(delta>0){console.log('向上滚动');}elseif(delta<0){console.log('向下滚动');}});

8. 总结

  • jQuery 可以轻松监听wheel事件,并通过event.originalEvent.deltaY判断滚动方向。
  • 阻止默认滚动行为:使用event.preventDefault()
  • 兼容旧浏览器:可额外监听mousewheel或使用插件。
  • 推荐使用 jQuery Mouse Wheel 插件(如需更稳定的兼容性)。

希望本文能帮助你掌握jQuery 鼠标滚轮事件的使用!如果有任何问题,欢迎在评论区讨论 🚀。

http://www.jsqmd.com/news/771629/

相关文章:

  • 2026最新海口工商注册公司排行:合规与服务实力实测盘点 - 奔跑123
  • 初次使用Taotoken模型广场进行模型选型与测试的直观感受
  • 2026采购挤出型材选哪家?PMMA、ASA、TPU、HDPE厂家推荐 - 品牌2025
  • 潍坊悍龙机械设备:杭州液压钻床出售哪家口碑好 - LYL仔仔
  • 2026四川碳纤维加固服务商专业深度测评报告 - 深度智识库
  • 全栈开发技术栈解析:TypeScript、React、Prisma与Docker的现代化实践
  • AISMM实施失败率高达67%?一线审计师血泪复盘:4类组织架构陷阱与即刻自检清单
  • 重新定义物联网通信:PubSubClient如何为嵌入式设备带来企业级消息队列能力
  • AISMM 2.0核心算法迭代深度解析(SITS2026闭门报告首次公开)
  • MiroMind暂停大中华区服务,知识产权争议与合规风险成背后隐忧
  • 北京九鼎众合餐饮管理:口碑好的北京盒饭配送公司 - LYL仔仔
  • 2026年南京婚纱摄影机构综合排名榜单 - 江湖评测
  • YOLO 系列:YOLOv10 结合 Transformer 编码器做检测头,端到端目标框直接回归实验
  • 2026 找塑料型材挤出厂家哪家好?防护导轨高性能厂家推荐 - 品牌2025
  • 5步掌握kohya_ss:AMD GPU上的Stable Diffusion终极训练指南
  • #2026最新机械设备回收公司推荐!广东优质权威榜单发布,实力靠谱珠三角广州等地公司值得选 - 十大品牌榜
  • MES系统工艺路线的完整设计方法
  • 从零构建智能体应用栈:架构、核心模块与实战指南
  • 音频控台技术入门:零基础小白的技术体系搭建与学习路径
  • 2026年最新广州代理记账公司排行:合规与服务能力实测盘点 - 奔跑123
  • #2026最新整厂拆除回收公司推荐!广东优质权威榜单发布,实力靠谱珠三角广州等地公司精选 - 十大品牌榜
  • 平价好用的泥膜 5款大牌泥膜实测,国货百元12天净透毛孔不反弹 - 全网最美
  • AI智能体架构解析:多源逻辑引擎与情境同步记忆在交易与学习场景的应用
  • Path of Building终极指南:5个技巧让流放之路Build规划变得简单高效
  • 苏州腾创光伏科技:口碑好的苏州电站拆除公司 - LYL仔仔
  • 3大技术突破+5种实战方案:语音克隆部署深度指南
  • CE修改器新手必看:如何一键保存你找到的变量地址(附C程序实例)
  • 2026最新瓷砖批发推荐!国内优质权威榜单发布,高性价比广东佛山等地品牌精选 - 十大品牌榜
  • 3分钟搞定PS4游戏修改:GoldHEN作弊管理器完全指南
  • #2026最新大型标识拆除回收公司推荐!广东优质权威榜单发布,实力靠谱珠三角广州等地公司值得选 - 十大品牌榜