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

jQuery 中使用 e.target 获取点击元素索引的正确方法

雨磊吖_3539

雨磊吖_3539

发布时间:2026-03-14 13:56:02

|

936人浏览过

|

来源于php中文网

原创

本文详解为何直接用 $(e.target).parent().index() 会导致 jQuery 索引错乱,并推荐使用 closest('li') 替代 parent(),确保无论点击 自身还是其内部子元素(如 或 ),都能稳定获取正确的父级 索引。

本文详解为何直接用 `$(e.target).parent().index()` 会导致 jquery 索引错乱,并推荐使用 `closest('li')` 替代 `parent()`,确保无论点击 `

  • ` 自身还是其内部子元素(如 `jQuery 中使用 e.target 获取点击元素索引的正确方法` 或 `

    `),都能稳定获取正确的父级 `

  • ` 索引。

    在 jQuery 事件处理中,e.target 始终指向实际被点击的 DOM 元素,而非事件绑定的目标元素。例如,当为

  • 绑定点击事件时,若用户点击的是
  • 内部的

    或 jQuery 中使用 e.target 获取点击元素索引的正确方法 标签,则 e.target 就是该

    或 jQuery 中使用 e.target 获取点击元素索引的正确方法,而非

  • 。此时调用 $(e.target).parent() 会返回其直接父元素——虽然通常也是
  • ,但一旦 HTML 结构稍有变化(如嵌套 、添加容器
    ),parent() 就可能跳过目标
  • ,导致 .index() 计算出错。

    更关键的是:.index() 方法在无参数调用时,会返回当前 jQuery 对象在其同级兄弟元素中的位置索引(从 0 开始)。若 $(e.target).parent() 返回了错误的父节点(比如某个中间

    ),其兄弟节点就不再是
  • 列表,索引自然失效。

    ✅ 正确做法是使用 .closest('li'):
    它从 e.target 开始向上遍历 DOM 树,严格查找最近的匹配

  • 祖先元素(含自身)
  • ,语义明确、结构鲁棒,不受内部嵌套影响。

    以下是修正后的完整示例:

    jQuery 1.12.4
    jQuery 1.12.4

    jQuery 1.12.4是jQuery 1.x系列的最后一个正式稳定版本,由jQuery团队于2016年发布。该版本主要面向需要兼容旧版浏览器环境的网站和Web应用,尤其适用于仍需支持Internet Explorer 6、Internet Explorer 7、Internet Explorer 8等老旧浏览器的项目。

    下载
    <script src="/uploads/20260314/177345026469b4b418c8c7b.jpg"></script>
    <ul>
        <li>
            <img src="icon1.png" alt="Hindu">
            <p>Hindu</p>
        </li>
        <li>
            <img src="icon2.png" alt="Muslim">
            <p>Muslim</p>
        </li>
        <li>
            <img src="icon3.png" alt="Christian">
            <p>Christian</p>
        </li>
    </ul>
    
    <script>
    $("li").on("click", function(e) {
        const liIndex = $(e.target).closest('li').index();
        console.log("Clicked item index:", liIndex); // 始终输出 0, 1 或 2
    });
    </script>

    ? 注意事项:

    • 避免使用箭头函数 => 绑定 this:原问题中使用了 (e) => { ... },虽不影响 e.target,但会丢失 jQuery 默认为事件处理器设置的 this(即当前
    • 元素)。建议改用标准函数表达式 function(e),或直接使用 $(this).index()(更简洁高效):
      $("li").on("click", function(e) {
          console.log($(this).index()); // 推荐:语义清晰、性能更优
      });
    • 事件委托场景下仍适用:若
    • 是动态生成的,应将事件委托给静态父容器(如
        ),并配合 closest():
        $("ul").on("click", "li", function(e) {
            console.log($(this).index()); // this 仍指向被点击的 <li>
        });
    • 兼容性提示:.closest() 在 jQuery 1.3+ 中已支持,现代项目无需顾虑;纯 JavaScript 可用 e.target.closest('li') 替代。

    总结:e.target 的不确定性要求我们主动“定位目标容器”,而非依赖层级假设。.closest('li') 是语义化、健壮且可读性强的最佳实践;而 $(this).index() 在直接绑定到

  • 时更为简洁可靠——二者皆优于脆弱的 parent() 链式调用。
  • 热门AI工具

    更多
    WorkBuddy

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

    Loomy
    Loomy Hot

    一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

    讯飞绘文

    讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

    DeepSeek

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

    豆包大模型

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

    PixTV
    PixTV Hot

    PixTV是一款面向AIGC内容创作的AI视频生成工具。

    火山引擎

    火山引擎是一款面向企业的云计算与AI服务平台。

    Seko
    Seko Hot

    一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

    Lovart
    Lovart Hot

    一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

    相关专题

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

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

    60

    2026.10.28

    Vite 如何搭配 Vue.js
    Vite 如何搭配 Vue.js

    Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

    20

    2026.10.28

    Vite 项目目录怎么看
    Vite 项目目录怎么看

    Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

    40

    2026.10.28

    Gradle插件开发入门教程
    Gradle插件开发入门教程

    本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

    140

    2026.10.22

    Gradle Wrapper配置教程
    Gradle Wrapper配置教程

    本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

    80

    2026.10.22

    Golangci-lint检查器使用教程
    Golangci-lint检查器使用教程

    本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

    80

    2026.10.22

    Gradle怎么构建Java项目
    Gradle怎么构建Java项目

    本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

    40

    2026.10.22

    PHP时间戳漏洞修复教程
    PHP时间戳漏洞修复教程

    本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

    80

    2026.10.22

    Golangci-lint配置文件与规则设置
    Golangci-lint配置文件与规则设置

    本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

    40

    2026.10.22

    热门下载

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

    相关下载

    更多

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    jQuery官方API文档
    jQuery官方API文档

    共0课时 | 0人学习

    jQuery 教程
    jQuery 教程

    共42课时 | 16.6万人学习

    HTML+CSS基础与实战
    HTML+CSS基础与实战

    共132课时 | 19.5万人学习

    最新文章

    更多

    PDF工具

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

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