如何在点击的Div中获取正确的ID


如何在点击的div中获取正确的id

本文旨在解决动态生成的HTML元素中,点击事件发生时,如何准确获取与该元素关联的ID值的问题。通过事件委托和DOM遍历,我们将提供一种可靠的方法,确保在复杂的动态环境中,始终能获取到正确的ID,避免因选择器错误而导致的数据获取错误。

在动态生成的HTML结构中,经常会遇到点击事件需要获取特定ID的情况。如果直接使用jQuery选择器,可能会因为DOM结构的变化或选择器范围过大而导致获取到错误的ID。本文将介绍如何使用事件委托和DOM遍历,准确地获取与点击元素相关的ID。

问题分析

原始代码的问题在于,点击.histor-uten元素时,$("input[name='id_utt']").val() 总是返回第一个匹配的input元素的value,而不是当前点击的.histor-uten元素内部的input元素的value。这是因为选择器$("input[name='id_utt']")会选择页面上所有name属性为id_utt的input元素,并返回第一个匹配项的值。

解决方案:事件委托与DOM遍历

解决此问题的关键在于:

易森网络企业版 易森网络企业版

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

易森网络企业版 0 查看详情 易森网络企业版
  1. 事件委托: 将事件监听器绑定到父元素,利用事件冒泡机制,监听子元素的点击事件。
  2. DOM遍历: 在事件处理函数中,通过DOM遍历,找到当前点击元素内部的input元素,并获取其value。

以下是修改后的代码:

var data = [
    { codigo: "1", Utente: "Teste" },
    { codigo: "2", Utente: "Teste1" },
    { codigo: "3", Utente: "Teste2" },
    { codigo: "4", Utente: "Teste3" },
    { codigo: "5", Utente: "Teste4" },
    { codigo: "6", Utente: "Teste5" },
];

$(document).on('click', '.dad-inf', function() {
    var linha = ``;

    for (var i = 0; i < data.length; i++) {
        codigo = data[i].codigo;
        Utente = data[i].Utente;

        linha += `<div class="col-md-6 col-xl-3">
            <a href="#" class="dropdown-item btn btn-warning histor-uten">
              <div class="profile-photo-div" id="profile-photo-div">
                <div class="profile-buttons-div">
                  <div class="profile-img-input" id="profile-img-input">
                    <label class="butttton" id="change-photo-label" for="change-photo">#${Utente}</label>
                    <input type="hidden" name="id_utt" value="${codigo}">
                  </div>
                </div>
               </div>
              </a>
            </div>`;
    }

    $(".tesssste").html(linha);

});

$(document).on('click', '.histor-uten', function(e) {
    let parent = $(this);
    // First make sure it selects the element with the histor-uten class
    if (!parent.hasClass('histor-uten')) {
        parent = $(this).closest('.histor-uten');
    }

    // Get the child input from the parent instead of the first one in the document
    var id_utt = $(parent.find("input[name='id_utt']")).val();
    console.log(id_utt);

});

$(function() {
    $(".btn-show").click(function(e) {
        e.preventDefault();
        el = $(this).data('element');
        $(el).show();
        $("section > div").not(el).hide();
    });
});

代码解释:

  • $(document).on('click', '.histor-uten', function(e) { ... });: 使用事件委托,将点击事件监听器绑定到document,监听所有.histor-uten元素的点击事件。 这样做的好处是,即使.histor-uten元素是动态生成的,也能正确绑定事件。
  • let parent = $(this);: 获取当前点击的.histor-uten元素。$(this)指向触发事件的DOM元素。
  • if (!parent.hasClass('histor-uten')) { parent = $(this).closest('.histor-uten'); }: 确保 parent 变量指向 .histor-uten 元素。 如果点击事件发生在 .histor-uten 元素的子元素上,则使用 .closest() 方法找到最近的父元素 .histor-uten。
  • var id_utt = $(parent.find("input[name='id_utt']")).val();: 使用parent.find("input[name='id_utt']")在当前点击的.histor-uten元素内部查找name属性为id_utt的input元素,并获取其value。

完整示例

<!DOCTYPE html>
<html>

<head>
    <title>Get ID Example</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.min.js"></script>
</head>

<body>

    <a href="s105" data-element="#minhaDiv105" class="btn-show dad-inf">Utentes</a>

    <section id="s105">
        <div id="minhaDiv105">
            <div class="row tesssste">
            </div>
        </div>
    </section>

    <script>
        var data = [
            { codigo: "1", Utente: "Teste" },
            { codigo: "2", Utente: "Teste1" },
            { codigo: "3", Utente: "Teste2" },
            { codigo: "4", Utente: "Teste3" },
            { codigo: "5", Utente: "Teste4" },
            { codigo: "6", Utente: "Teste5" },
        ];

        $(document).on('click', '.dad-inf', function() {
            var linha = ``;

            for (var i = 0; i < data.length; i++) {
                codigo = data[i].codigo;
                Utente = data[i].Utente;

                linha += `<div class="col-md-6 col-xl-3">
            <a href="#" class="dropdown-item btn btn-warning histor-uten">
              <div class="profile-photo-div" id="profile-photo-div">
                <div class="profile-buttons-div">
                  <div class="profile-img-input" id="profile-img-input">
                    <label class="butttton" id="change-photo-label" for="change-photo">#${Utente}</label>
                    <input type="hidden" name="id_utt" value="${codigo}">
                  </div>
                </div>
               </div>
              </a>
            </div>`;
            }

            $(".tesssste").html(linha);

        });

        $(document).on('click', '.histor-uten', function(e) {
            let parent = $(this);
            // First make sure it selects the element with the histor-uten class
            if (!parent.hasClass('histor-uten')) {
                parent = $(this).closest('.histor-uten');
            }

            // Get the child input from the parent instead of the first one in the document
            var id_utt = $(parent.find("input[name='id_utt']")).val();
            console.log(id_utt);

        });

        $(function() {
            $(".btn-show").click(function(e) {
                e.preventDefault();
                el = $(this).data('element');
                $(el).show();
                $("section > div").not(el).hide();
            });
        });
    </script>

</body>

</html>

注意事项

  • 确保事件委托的父元素存在于DOM中。
  • DOM遍历时,选择器要足够精确,避免选择到错误的元素。
  • 如果HTML结构发生变化,需要相应地调整DOM遍历的代码。

总结

通过使用事件委托和DOM遍历,可以准确地获取动态生成的HTML元素中与点击事件相关的ID。这种方法避免了全局选择器可能导致的问题,提高了代码的健壮性和可维护性。在复杂的Web应用中,掌握这些技巧至关重要。

以上就是如何在点击的Div中获取正确的ID的详细内容,更多请关注其它相关文章!


# jquery  # html  # css  # 如何在  # 山西旅游网站建设团队  # 并获  # 全选  # 自适应  # 惠州网站推广地址在哪里  # 南京无锡关键词排名  # 兴县网站seo优化排名  # 关键词排名优化运营方案  # 家居定制营销推广方案  # 工程机械网站推广哪家强  # 网站的seo方案样式  # 辽宁网站建设哪家强  # 北京seo线上推广系统  # 网页设计  # 双击  # 第一个  # 绑定  # 选择器  # 遍历  # html元  # 点击事件  # cdn  # 事件冒泡  # npm  # go  # ajax  # bootstrap  # js 


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


相关推荐: 苹果自助维修计划支持哪些设备机型  小红书如何引流到私信?引流到私信有用吗?  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  《杖剑传说》食谱大全  WPS文字如何进行简繁转换  《合金装备4》有望推出重制版!制作人发话了  iPhone 15 Pro如何查看存储空间占用_iPhone 15 Pro存储空间查看教程  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  《气泡星球》兑换码礼包大全  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  《狐友》联系客服方法  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  优化长HTML属性值:SonarQube警告与实用策略  CSS过渡与滚动滚动事件结合应用_scroll与transition动画  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  QQ网站入口直接登录 QQ官方正版登录页面  《七读免费小说》开通会员方法  《绝区零》2.3前瞻|直播|内容介绍  4399造梦西游3无敌版_4399游戏入口  mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法  Python定时发送QQ消息  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  我的世界官方网址入口 我的世界游戏主页直达入口  外卖小程序对接第三方配送  yandex网页版直接登录 yandex官方入口平台访问方法  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  Go语言中方法与接收器:指针和值类型的调用机制详解  iPhone14开启Apple TV遥控设置  《跳跳舞蹈》循环播放方法  PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略  虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画  Django模型动态关联检查:高效管理复杂关系  传统曲艺莲花落的表演形式是  解决SQLAlchemy模型跨文件关联的Linter兼容性指南  @Team是什么?揭秘团队含义  实现二叉树的层序插入:基于树大小的路径导航  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  Go语言中方法接收器的选择:值类型还是指针类型? 

 2025-11-17

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

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

点击免费数据支持

提交您的需求,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.