讲师中心 微信公众号
AI工具推荐 视频效率加速

jQuery 中基于事件目标动态添加 CSS 类的正确实践

陌杰姑娘_8358

陌杰姑娘_8358

发布时间:2026-02-03 15:56:21

|

272人浏览过

|

来源于php中文网

原创

jQuery 中基于事件目标动态添加 CSS 类的正确实践

本文详解如何在 jquery 中通过 `touchend`/`mouseup` 事件精准识别被触达的目标元素,并使用 `hasclass()` 和 `addclass()` 动态添加样式类,避免误操作和逻辑失效。

在实现拖拽交互(尤其是移动端如 iPad)时,一个常见误区是:在事件处理器中直接对全局选择器(如 $(".year2"))进行判断和操作,而未考虑事件实际触发的具体 DOM 元素。原代码中:

if ($(".year").hasClass("year2")) { ... }

该写法检查的是页面中任意一个 .year 元素是否含有 year2 类(且仅返回首个匹配项),而非判断当前被触摸/点击的元素是否为 .year2——这导致逻辑完全脱离用户真实交互目标,必然失效。

✅ 正确做法是:从事件对象 e.target 出发,获取实际被触发的 DOM 元素,并用 jQuery 封装后进行精确判断。推荐统一监听 mouseup touchend 双事件,兼顾桌面与触屏设备:

$('.draggable').on('mouseup touchend', function(e) {
  e.preventDefault(); // 阻止默认行为(如文本选中、滚动等)

  const $target = $(e.target); // 获取被触发的 jQuery 对象

  // 判断目标是否为指定年份容器(支持多个类名一次性匹配)
  if ($target.is('.year2, .year58')) {
    $target.addClass('dropped'); // 仅对该目标添加类
  }
});
? $(e.target).is(selector) 是关键:它高效判断当前目标是否匹配给定选择器,语义清晰、性能优于多次 hasClass() 嵌套判断,也天然规避了“查全局却改局部”的逻辑错位。

同时,建议为 .dropped 类定义明确样式以便可视化验证效果:

Miller CSV TSV JSON 数据处理器
Miller CSV TSV JSON 数据处理器

Miller (mlr) 是一个命令行工具,用于查询、整形和重新格式化名称索引数据,如 CSV、TSV、JSON 和 JSON Lines。它将 awk、sed、cut、join 和 sort 的功能整合到一个专为结构化数据处理而构建的单一工具中。

下载

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

.dropped {
  background-color: #ffeb3b; /* 明亮黄色,便于调试 */
  transition: background-color 0.2s ease;
}

? 注意事项:

  • ❌ 避免在事件中使用 $(".year2").addClass(...) —— 它会批量作用于所有匹配元素,而非用户所点的那个;
  • ✅ 始终基于 e.target 或 e.currentTarget(需注意委托场景差异)做操作;
  • ⚠️ 若 .year 子元素内含嵌套标签(如 或 jQuery 中基于事件目标动态添加 CSS 类的正确实践),e.target 可能是其子节点。此时可使用 closest() 向上查找最近的 .year 容器:
    const $year = $(e.target).closest('.year');
    if ($year.length && $year.is('.year2, .year58')) {
      $year.addClass('dropped');
    }
  • ? 移动端 touchend 触发后可能伴随模拟 click,若后续有其他 click 事件,建议统一用 e.preventDefault() 或合理节流,防止重复响应。

掌握以事件目标为中心的 DOM 操作思维,是编写健壮、可维护交互逻辑的基础。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

601

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1176

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2282

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

2168

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

493

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

337

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

806

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

309

2026.01.13

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn