新闻中心
如何使用 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 元素的值,而不是当前点击的那个。
解决方案:事件委托和查找父元素
解决这个问题的关键在于使用事件委托和查找父元素的方式。
事件委托: 将事件监听器绑定到父元素上,而不是直接绑定到动态生成的子元素上。这样可以确保即使子元素是动态生成的,事件监听器也能正常工作。
Kreado AI
Kreado AI是一个多语言AI视频创作平台,只需输入文本或关键词,即可创作真实/虚拟人物的多语言口播视频。 为创作者提供AI赋能
182
查看详情
查找父元素: 在事件处理函数中,通过 $(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框架:动态服务解码后的图片内容


2025-11-20
浏览次数:次
返回列表
n.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>