新闻中心

如何使用 jQuery 获取动态生成 div 中点击元素的正确 ID

2025-11-20
浏览次数:
返回列表

如何使用 jquery 获取动态生成 div 中点击元素的正确 id

本文旨在解决在使用 jQuery 动态生成包含隐藏 input 元素的 div 时,点击不同 div 获取到相同 ID 的问题。通过事件委托和查找父元素的方式,确保每次点击都能准确获取到对应 div 中 input 元素的正确值。

在使用 jQuery 动态生成 HTML 元素时,尤其是涉及到事件处理和数据获取,很容易遇到一些问题。本文将详细介绍如何在使用 jQuery 动态生成包含隐藏 input 元素的 div 列表时,正确获取到被点击 div 对应的 ID 值。

问题描述

假设你有一个动态生成的用户列表,每个用户都包含一个隐藏的 input 元素,用于存储用户的 ID。当点击某个用户时,你需要获取该用户的 ID。然而,由于所有动态生成的 input 元素都具有相同的 name 属性,直接使用 $("input[name='id_utt']").val() 获取到的总是第一个 input 元素的值,而不是当前点击的那个。

解决方案:事件委托和查找父元素

解决这个问题的关键在于使用事件委托和查找父元素的方式。

  1. 事件委托: 将事件监听器绑定到父元素上,而不是直接绑定到动态生成的子元素上。这样可以确保即使子元素是动态生成的,事件监听器也能正常工作。

    Kreado AI Kreado AI

    Kreado AI是一个多语言AI视频创作平台,只需输入文本或关键词,即可创作真实/虚拟人物的多语言口播视频。 为创作者提供AI赋能

    Kreado AI 182 查看详情 Kreado AI
  2. 查找父元素: 在事件处理函数中,通过 $(this) 获取到当前点击的元素,然后使用 .closest() 方法找到包含 input 元素的最近的父元素。这样就可以在该父元素范围内查找 input 元素,从而获取到正确的 ID 值.

代码示例

以下是修改后的代码示例:

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){ ... });: 这行代码使用了事件委托,将 click 事件监听器绑定到了 document 对象上,并指定了只有点击 class 为 .histor-uten 的元素时才会触发该事件。
  • let parent = $(this);: 获取当前点击的元素,并赋值给 parent 变量。
  • if(!parent.hasClass('histor-uten')){parent = $(this).closest('.histor-uten');}: 确保选择器选择的是具有 histor-uten 类的元素。
  • var id_utt = $(parent.find("input[name='id_utt']")).val();: 这行代码首先使用 $(this).closest('.histor-uten') 找到包含 input 元素的最近的父元素(class 为 .histor-uten 的 div),然后在该父元素范围内使用 find("input[name='id_utt']") 查找 input 元素,最后使用 .val() 方法获取其值。

HTML 结构

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/<a class="__cf_email__" data-cfemail="e5878a8a919691978495a5d0cbb4cbb6" href="/cdn-cgi/l/email-protection">[email protected]</a>/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/<a class="__cf_email__" data-cfemail="93f1fcfcf7f0f7f1e2f3d3a6bdd2bdc0" href="/cdn-cgi/l/email-protection">[email protected]</a>/dist/js/bootstrap.min.js"></script>

<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>

注意事项

  • 确保 .histor-uten 类选择器能够唯一标识包含 input 元素的父元素。
  • 如果 HTML 结构发生变化,需要相应地调整 .closest() 方法的参数。

总结

通过使用事件委托和查找父元素的方式,可以有效地解决在使用 jQuery 动态生成 HTML 元素时,获取到错误 ID 值的问题。这种方法不仅适用于获取 input 元素的值,还可以用于获取其他任何需要根据点击元素动态获取的数据。理解和掌握这种技巧对于编写健壮的 jQuery 代码至关重要。

以上就是如何使用 jQuery 获取动态生成 div 中点击元素的正确 ID的详细内容,更多请关注其它相关文章!


# 拖放  # 兰州网络营销推广哪家好  # 湖州网站建设包括什么  # 瓷砖店营销推广费用  # 谢岗抖音运营SEO  # 中山SEO驭明  # seo原创文章没有思路  # 普定网站优化  # 可以推广的网站有什么  # 分析头条关键词排名工具  # 快餐店如何营销推广产品  # 是一个  # 而不是  # 的是  # 多语言  # 这行  # css  # 选择器  # 如何使用  # 绑定  # 关键词  # .net  # cdn  # ai  # npm  # go  # ajax  # bootstrap  # js  # html  # jquery 


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


相关推荐: 在python-socketio事件处理器中安全访问Flask应用上下文  b站怎么看视频的弹幕数量_b站弹幕数量查看方法  Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  C++ string find函数返回值npos详解_C++字符串查找失败的判断条件  Python类型检查:优化关联可选属性的Mypy推断策略  微信网页版官方快速登录入口 微信网页版网页版账号直达  AO3最新官网入口公告_2025AO3镜像站实时查询方法  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  在Socket.IO连接中实现Access Token自动更新与动态重连  Python Socket多播通信中指定源IP地址的实践指南  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  顺丰国际快递查询 国际件官方查询入口  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  “音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!  css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  蛙漫移动版在线看 蛙漫手机浏览器直达入口  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  BetterDiscord插件中安全更新用户简介的实践指南  Mac怎么使用表情符号_Mac Emoji快捷键面板  内存疯狂猛猛涨价:主板销量直接腰斩!  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  zookeeper 都有哪些功能?  限制HTML日期输入框的日期选择范围  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  微信商城在哪里打开【步骤】  Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  Discord Slash 命令响应超时问题的异步解决方案  零跑汽车11月交付量达70327台 实现连续9个月正增长  网易大神怎么保存别人动态的图片_网易大神动态图片保存方法  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  如何提高微信支付的安全性_微信支付安全防护与设置建议  优化Log4j2控制台输出性能:解决异步日志瓶颈  Lar*el递归关系中排除子孙节点的策略  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  抖音怎么赚钱_抖音创作者变现方法与途径指南  Python实时数据流中的动态最值查找策略  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  小米14应用无法联网原因分析_小米14网络权限修复  抖音网页版快捷访问 抖音网页版网页版入口操作教程  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  Go Martini框架:动态服务解码后的图片内容 

搜索