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


如何使用 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. 事件委托: 将事件监听器绑定到父元素上,而不是直接绑定到动态生成的子元素上。这样可以确保即使子元素是动态生成的,事件监听器也能正常工作。

    AI at Meta AI at Meta

    Facebook 旗下的AI研究平台

    AI at Meta 72 查看详情 AI at Meta
  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技巧  # 石岩网站建设网站推广  # 平武营销网站建设  # 环宇国际营销策划推广招聘  # 网络营销推广规模  # 饭堂营销推广策略怎么写  # 而不是  # 的是  # 这行  # 自适应  # 全选  # css  # 双击  # 选择器  # 如何使用  # 绑定  # .net  # cdn  # ai  # npm  # go  # ajax  # bootstrap  # js  # html  # jquery 


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


相关推荐: win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】  热血江湖归来医师加点攻略  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  win11怎么启用或禁用休眠 Win11 powercfg命令管理休眠文件【技巧】  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  繁花漫画使用教程  iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  不吃碳水化合物是健康减肥的好办法吗  QQ邮箱官方登录页_腾讯出品安全稳定的邮箱服务  以下哪一个是适应长期护理制度发展而设立的新职业  《下一站江湖2》武器获取方法  大众点评了却看不到是怎么回事  PHP中实现JSON数据数组分页的教程  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  Linux如何开发轻量级数据服务模块_Linux服务化设计  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  Pandas中基于动态偏移量实现DataFrame列值位移的策略  mail.qq.com登录入口 QQ邮箱网页版直达  纯CSS实现自适应宽度与响应式布局的水平按钮组  RxJS中如何高效地在一个函数内处理和合并多个数据集合  《百度畅听版》关闭兴趣推荐方法  如何取消数字签名  b站怎么查看视频的码率_b站视频码率查看方法  口腔诊所管理软件推荐  向日葵客户端怎么进行语音通话_向日葵客户端语音通话功能使用方法  iPhone 15 Pro如何查看存储空间占用_iPhone 15 Pro存储空间查看教程  Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码  六级准考证号怎么查_四六级准考证查询入口官网  《一起考教师》账号注销方法  小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  抖音号升级成企业资质怎么弄?有什么好处?  Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法  C++ bind函数使用教程_C++参数绑定与函数适配器的应用  《爱笔思画x》魔棒工具抠图教程  MongoDB聚合管道:高效统计列表中各项的文档数量  b站如何剪辑视频_b站必剪app使用教程  风车动漫官网首页入口登录 风车动漫在线观看正版地址  J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析  苹果手机怎么合并照片_苹果手机合并多张照片的操作方法  Composer如何使用composer-plugin-api开发自定义插件  CSS过渡与滚动滚动事件结合应用_scroll与transition动画  Flexbox布局:实现粘性导航与底部页脚的完美结合  有道AI翻译入口 智能写作官方网站入口  《跳跳舞蹈》循环播放方法  邮政快递寄件查询入口 邮政快递收件查询入口 

 2025-11-20

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

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

点击免费数据支持

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