jQuery与纯CSS实现多元素独立悬停提示效果教程


jQuery与纯CSS实现多元素独立悬停提示效果教程

针对多个div元素同时显示悬停提示及背景高亮的问题,本文详细介绍了两种解决方案。首先,通过优化jquery事件处理中的this关键字和find()方法,实现精确控制单个元素。其次,推荐使用纯css的:hover伪类,提供更简洁、高性能的实现方式,并修正了html结构中的嵌套错误,确保每个悬停提示独立响应。

在网页开发中,为多个相似元素添加独立的悬停提示(tooltip)和交互效果是常见的需求。然而,如果不正确地处理事件委托和元素选择,可能会导致所有元素同时响应悬停事件,而非单个元素。本文将探讨如何利用jQuery和纯CSS两种方法,实现多个DIV元素各自独立的悬停提示及背景高亮效果。

问题分析:多元素同时响应悬停事件

原始代码中,当鼠标悬停在任何一个.tooltip元素上时,jQuery事件处理函数会执行以下代码:

$(".tooltip-img").addClass("tooltip-img-img");

这里的关键问题在于$(".tooltip-img")是一个全局选择器,它会选中页面上所有具有tooltip-img类的元素。因此,无论鼠标悬停在哪一个.tooltip上,所有.tooltip-img的背景都会被高亮,这显然不是我们期望的效果。

要解决这个问题,我们需要确保事件处理只影响当前被悬停的特定元素及其子元素。

立即学习“前端免费学习笔记(深入)”;

方案一:使用jQuery精确控制悬停效果

通过jQuery,我们可以利用事件处理函数中的this关键字来引用触发事件的当前DOM元素,并结合find()方法来定位其内部的特定子元素。

Haiper Haiper

一个感知模型驱动的AI视频生成和重绘工具,提供文字转视频、图片动画化、视频重绘等功能

Haiper 227 查看详情 Haiper

核心思路

  1. 在mouseover和mousele*e事件处理函数中,this指向当前被悬停的.tooltip元素。
  2. 将this包装成jQuery对象$(this)。
  3. 使用$(this).find(".tooltip-img")来查找当前.tooltip元素内部的.tooltip-img子元素。
  4. 对找到的特定子元素添加或移除样式类。

修正后的jQuery代码

$(document).ready(function() {
  // 当鼠标悬停在任何一个 .tooltip 元素上时
  $(".tooltip").on('mouseover', function() {
    // 仅查找当前被悬停的 .tooltip 元素内部的 .tooltip-img 子元素,并添加高亮类
    $(this).find(".tooltip-img").addClass("tooltip-img-img");
  });

  // 当鼠标离开任何一个 .tooltip 元素时
  $(".tooltip").on('mousele*e', function() {
    // 仅查找当前被悬停的 .tooltip 元素内部的 .tooltip-img 子元素,并移除高亮类
    $(this).find(".tooltip-img").removeClass("tooltip-img-img");
  });
});

HTML结构优化

值得注意的是,原始HTML结构中存在一个标签嵌套在

修正后的HTML结构如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="div-style">
  <div class="tooltip text" data-title="这是第一个提示">
    <button class="tooltip-img">
      <svg id="OpenDialog1" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M16 2H7.979C6.88 2 6 2.88 6 3.98V12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 10H8V4h8v8zM4 10H2v6c0 1.1.9 2 2 2h6v-2H4v-6z"/></svg>
    </button>
  </div>
</div>

<div class="div-style">
  <div class="tooltip text" data-title="这是第二个提示">
    <button class="tooltip-img">
      <svg id="OpenDialog2" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M16 2H7.979C6.88 2 6 2.88 6 3.98V12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 10H8V4h8v8zM4 10H2v6c0 1.1.9 2 2 2h6v-2H4v-6z"/></svg>
    </button>
  </div>
</div>

方案二:推荐使用纯CSS实现悬停效果

对于简单的悬停样式变化,使用纯CSS :hover伪类通常是更优的选择。它具有更好的性能,代码更简洁,并且不需要依赖J*aScript。

核心思路

利用CSS的父子选择器,当父元素处于:hover状态时,为其特定的子元素应用样式。

修正后的CSS代码

我们只需要修改.tooltip-img-img类所代表的样式应用方式。将原来需要JS动态添加的样式,直接通过:hover伪类应用到.tooltip-img上。

.tooltip-img {
  float: right;
  position: relative;
  top: 83px;
  left: 214px;
  background: transparent;
  border: none;
  width: 25px;
  height: 25px;
}

/* 当 .tooltip 元素被悬停时,其内部的 .tooltip-img 子元素应用以下样式 */
.tooltip:hover .tooltip-img {
  width: 25px !important;
  height: 25px !important;
  border-radius: 15px;
  background: #0f0 !important; /* 高亮背景色 */
}

/* 以下是原始的 tooltip 样式,保持不变 */
.tooltip {
  position: relative;
}

/* 悬停时显示提示文本 */
.tooltip:hover .tooltiptext {
  display: block;
}

.tooltip:before,
.tooltip:after {
  display: block;
  opacity: 0;
  pointer-events: none;
  position: absolute;
}

.tooltip

以上就是jQuery与纯CSS实现多元素独立悬停提示效果教程的详细内容,更多请关注其它相关文章!


# 两种  # 辅食店推广活动营销策略  # 关键词排名运营技巧  # 达内seo课程大纲  # 宁河区seo网络优化  # 韩国运动服饰网站推广  # 传统行业网络营销推广的n种方式  # 网站的推广a来赞61下拉15r  # 大型网站制作优化公司  # 青岛seo工资待遇如何  # 欧洲网站推广平台排名前十  # 的是  # 上时  # 当鼠标  # 推荐使用  # css  # 移除  # 选择器  # 这是  # 任何一个  # 多个  # cdn  # seo  # svg  # ajax  # js  # html  # jquery  # java  # javascript 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: Python实时数据流中高效查找最大最小值  荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  使用Google服务账号实现Google Drive API无缝集成与文件访问  铁路12306官网入口 铁路12306中国铁路官网登录首页  《偃武》甘宁技能详解  我居然低估了 DeepSeek,这次更新它做到了这些!  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  QQ邮箱PC端登录页面_QQ邮箱网页版登录界面  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  Vue 3中独立响应式实例的创建与应用  ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算  汽水音乐在线入口 汽水音乐网页端官方页面快速打开  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  WooCommerce 新客户订单自动添加管理员备注教程  小米手机截图后如何查看历史_小米手机截图历史记录查看方法  江苏大剧院会员卡购买步骤  iPhone14无法连接蓝牙设备如何解决  CSS过渡与滚动滚动事件结合应用_scroll与transition动画  教育查询官方网站入口 教育个人档案查询免费官网  b站怎么查看视频的码率_b站视频码率查看方法  HTML Canvas文本样式定制指南:解决外部字体加载与应用难题  圆通快递官网入口查询单号 手机版官方查询入口  AO3中文入口稳定分享_AO3官网HTTPS看文详解  《海豚家》注销账号方法  三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧  Python中深度嵌套字典与列表的数据提取与条件过滤指南  《蓝色星原:旅谣》坐骑获取攻略  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  苹果手机怎么合并照片_苹果手机合并多张照片的操作方法  天堂漫画网页版在线阅读 天堂漫画手机版入口  德邦快递查询入口登录官网 德邦快递单号查询系统入口  b站如何剪辑视频_b站必剪app使用教程  VS Code如何设置默认配置  苹果如何下载nanobanana  解决CSS background 属性中 cover 关键字的常见误用  windows10怎么设置电源按钮_windows10按下电源键功能修改  《气泡星球》兑换码礼包大全  《伊瑟》凶影追缉库卢鲁boss攻略  如何高效地基于键列值映射DataFrame中的多个列  易车网官网直达入口 易车网在线登录入口  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  抖音官网入口快速访问 抖音网页版账号注册解析  Google Cloud Functions 时区处理指南:理解与最佳实践  嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】 

 2025-11-02

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.