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


相关推荐: WooCommerce 购物车:始终显示所有交叉销售商品  鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】  VS Code源代码管理(SCM)视图的进阶使用技巧  宝妈做视频号该写什么标签话题?宝妈关注的话题有哪些?  在Peewee中处理PostgreSQL记录重复:一站式数据摄取教程  不吃碳水化合物是健康减肥的好办法吗  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  发博客与长微博技巧  铁路12306入口 铁路12306官网版入口登录网址  《edge浏览器》关闭翻译功能方法  《虎扑》关闭社区内容推荐方法  poki官网最新入口 poki小游戏大全入口  CSS如何控制元素外边距_margin实现布局间隔  VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略  英国搜索:多数英国人认为语言搜索是未来搜索  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明  《顺丰同城骑士》查看我的技能方法  苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍  b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  纯CSS实现滚动时动态时间轴线条颜色填充效果  VB表达式书写规则解析  如何在mysql中使用索引提示_mysql索引提示优化方法  J*aScript 数值去小数位处理:多种方法与实践  《三角洲行动》战斗步枪与机枪类改装代码分享  疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  《狐友》联系客服方法  QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读  电子白板帮助菜单使用指南  苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤  猫眼app抢票快还是小程序快  铁路12306怎么申请退票_铁路12306退票申请操作流程  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  126手机126邮箱登录_126邮箱手机登录入口官网  教育查询官方网站入口 教育个人档案查询免费官网  Keras中Convolution2D层及其核心辅助层详解  《腾讯相册管家》注销账号方法  Flexbox布局中Stencil组件宽度不显示问题解析与:host尺寸控制  如何查询个人病历记录  德邦快递会员怎么开通  Django模型动态关联检查:高效管理复杂关系  小红书网页版首页入口 小红书网页版电脑端官方登录链接  英雄联盟争者留名活动介绍  j*a中赋值运算符是什么?  mysql如何限制远程访问_mysql远程访问限制方法 

 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.