新闻中心

使用 J*aScript 根据 ID 匹配不同父元素中的元素(悬停时)

2025-10-17
浏览次数:
返回列表

使用 JavaScript 根据 ID 匹配不同父元素中的元素(悬停时)

本文将介绍如何使用 j*ascript 在鼠标悬停时,根据 id 匹配不同父元素中的元素,并动态添加或移除 `active` 类。通过遍历第一个父元素中的 `li` 元素,并监听 `mouseover` 和 `mouseout` 事件,我们可以获取当前悬停元素的 id,然后在第二个父元素中找到具有相同 id 的元素,并对其进行样式操作。

J*aScript 实现跨父元素 ID 匹配与样式控制

在 Web 开发中,有时我们需要实现一种交互效果:当鼠标悬停在一个元素上时,另一个元素(可能位于不同的父元素下)也随之改变样式。如果这些元素具有相同的 ID,我们可以利用 J*aScript 来实现这种效果。

实现原理

该方案的核心思想是:

  1. 选取第一个父元素(例如,class 为 first 的 div)下的所有 li 元素。
  2. 为每个 li 元素添加 mouseover 和 mouseout 事件监听器。
  3. 当 mouseover 事件触发时,获取当前 li 元素的 ID。
  4. 使用该 ID 作为选择器,在整个文档中查找第二个具有相同 ID 的元素(例如,class 为 second 的 div 下的 li 元素)。
  5. 为找到的第二个元素添加 active 类,从而改变其样式。
  6. 当 mouseout 事件触发时,移除第二个元素的 active 类,恢复其原始样式。

代码示例

以下是实现上述功能的 J*aScript 代码:

document.querySelectorAll(".first ul li").forEach(li => {
  li.addEventListener("mouseover", e => {
    document.querySelectorAll(`#${e.target.id}`)[1].classList.add("active");
  });
  li.addEventListener("mouseout", e => {
    document.querySelectorAll(`#${e.target.id}`)[1].classList.remove("active");
  });
});

代码解释

  • document.querySelectorAll(".first ul li"): 使用 querySelectorAll 方法选取所有位于 class 为 first 的元素下的 ul 元素内的 li 元素。
  • .forEach(li => { ... }): 遍历选取的每个 li 元素,并为每个元素执行回调函数。
  • li.addEventListener("mouseover", e => { ... }): 为每个 li 元素添加 mouseover 事件监听器。当鼠标悬停在该元素上时,触发回调函数。
  • e.target.id: 在 mouseover 事件中,e.target 指向触发事件的元素(即当前悬停的 li 元素),e.target.id 获取该元素的 ID。
  • document.querySelectorAll(\#${e.target.id}`)[1]: 使用querySelectorAll选取 ID 与当前悬停元素 ID 相同的元素。由于第一个元素已经被选取,所以使用索引[1]` 来获取第二个元素。
  • .classList.add("active"): 为选取的第二个元素添加 active 类。
  • li.addEventListener("mouseout", e => { ... }): 为每个 li 元素添加 mouseout 事件监听器。当鼠标移出该元素时,触发回调函数。
  • .classList.remove("active"): 移除选取的第二个元素的 active 类。

HTML 结构

察言观数AskTable 察言观数AskTable

企业级AI数据表格智能体平台

察言观数AskTable 78 查看详情 察言观数AskTable

为了使上述 J*aScript 代码正常工作,HTML 结构应如下所示:

<div class="first">
  <ul>
    <li id="one">Lorem</li>
    <li id="two">Ipsum</li>
    <li id="three">Dolor</li>
  </ul>
</div>

<div class="second">
  <ul>
    <li id="one">Lorem</li>
    <li id="two">Ipsum</li>
    <li id="three">Dolor</li>
  </ul>
</div>

CSS 样式

为了使 active 类生效,需要定义相应的 CSS 样式:

.active {
  background: #CCC;
}

注意事项

  • 确保两个父元素下的 li 元素具有相同的 ID,这是实现匹配的关键。
  • 该方法依赖于元素的 ID 属性,如果 ID 不存在或不唯一,可能会导致错误。
  • 如果需要匹配的元素不是 li 元素,需要相应地修改 J*aScript 代码中的选择器。
  • 此代码假设页面上只有两组具有相同 ID 的元素。如果存在更多组,则需要修改代码以确保选择正确的元素。

总结

通过 J*aScript 结合 CSS,我们可以轻松实现跨父元素 ID 匹配与样式控制。这种方法在需要实现复杂的交互效果时非常有用,例如,当鼠标悬停在一个导航菜单项上时,高亮显示内容区域中对应的部分。

以上就是使用 J*aScript 根据 ID 匹配不同父元素中的元素(悬停时)的详细内容,更多请关注其它相关文章!


# 上时  # 苏州网站建设网站推广  # 如何seo零金手指六六二一  # 盘锦网站推广巍星hfqjwl下拉  # 个人推广网站app  # 网站搜索引擎优化措施  # 轻食推广营销策划方案  # 网站排名优化价格怎么做  # 安康建设公司网站  # 盛大网站建设美丽  # 滁州网站建设详细方案  # 单选框  # 遍历  # 移除  # css  # 选择器  # 当鼠标  # 第一个  # 表单  # 回调  # 第二个  # ssl  # 回调函数  # seo  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  大象笔记网页版入口 印象笔记网页版登录入口  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  新三国志曹操传110级星符试炼夏侯渊极难攻略  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  Golang如何安装Swagger工具_GoSwagger文档生成环境  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  深入理解Promise链:如何在catch后中断then的执行  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  顺丰快件物流信息 官方网站查询入口  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  C++指针和引用有什么区别_C++内存管理核心概念深度解析  Typer应用中灵活处理命令行参数的令牌化与解析  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  React Hooks最佳实践:动态组件状态管理的组件化方案  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  Pyrogram与g4f集成:异步编程实践与常见错误解决  拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达  Bing引擎入口最新2025 Bing搜索免费官方登录  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  QQ邮箱登录官网首页 腾讯QQ邮箱网页入口  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  抖音创作助手登录入口_抖音创作辅助工具官网直达  实现分段式页面滚动导航:CSS与J*aScript教程  妖精动漫免费平台 妖精动漫官网资源观看网址  如何在网页中实现特定地点的随机图片展示  J*aScript中管理异步API调用:确保操作顺序与数据一致性  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  ExcelARRAYTOTEXT函数怎么自定义分隔符输出数组文本_ARRAYTOTEXT实现动态生成SQL语句  Centos/Linux 系统下安装 composer 的完整步骤  Lar*el DB::listen 事件中的查询执行时间单位解析  将HTML动态表格多行数据保存到Google Sheet的教程  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  J*a递归快速排序中静态变量导致数据累积问题的解决方案  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  支付宝如何管理隐私设置_支付宝隐私保护的配置技巧  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  2026春节假期时间安排 2026春节假日查询  Spyder启动失败:字体文件权限拒绝错误解决方案  2026年CSGO开箱网站推荐 CSGO开箱平台精选  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法 

搜索