javascript - 如何获取创建文档后添加的单击元素的 ID?
问题描述
我得到了一个被点击的 li 的 id,如下所示:
$("#repository-tabs li").on("click", function(e) {
alert(this.id);
});
简单,问题是,我之后动态添加 li 元素:
$("#add-tab").click(function() {
tabs = $("#repository-tabs li").length - 1;
append_at = tabs - 2;
$("#repository-tabs li:eq(" + append_at + ")").after('<li id="repository-tab-' + tabs + '" class="tab col s3 z-depth-5"><a class="white green-text text-darken-2 waves-effect waves-light" href="javascript:void(0);">Repositório ' + tabs + '</a></li>');
});
现在,当我单击添加的 li 元素时,不会触发任何事件。那么,如何获取未来点击项目的 ID?
解决方案
不要将事件直接应用于选项卡元素;相反,将其应用于父级并委托它。
on()
有第二个可选参数 ,selector
用于过滤触发事件的选定元素的后代。
$("#repository-tabs").on("click", "li", function() {
alert(this.id);
});
从文档:
委托事件处理程序的优点是它们可以处理来自以后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要
推荐阅读
- r - 加载和安装包 tidyverse 的问题 - 使用 Mac Air
- python - 为什么python认为我列表中的每个字符都是一个元素?
- kotlin - 有没有办法在 DocumentSnapshot.toObject() 中添加类型转换?
- ubuntu - 无法使用 sudo systemctl start 启动 Worker Service .NET Core
- neo4j - 我想按程度划分节点 - 为什么这个 Neo4J Cypher 请求这么慢?
- javascript - 通过部分匹配选择类名
- java - Android发送电子邮件验证码在其他设备上不起作用
- angular - 从 Firestore 中读取一个字段
- c# - EPPlus:调用计算函数后未提取值
- python - 如何在不丢失键的情况下合并两个字典?