Jquery 单击事件不会在使用 jquery 动态创建的元素上触发

2024-04-26

我正在尝试创建一个简单的功能,用户从下拉列表中选择一些值,然后单击“添加”按钮以标签的形式在下面的 div 中添加所选项目。

每个添加的标签都有一个删除锚点,单击该锚点即可删除该标签。

现在,当单击添加按钮时,标签将被正确插入, 但是当我单击标签上的删除按钮时,单击事件没有触发。

但是,如果我使用与动态生成的标签完全相同的标记对一些标签进行硬编码,则删除标签的单击事件将完全正确地触发,并且标签将按照我的意愿被删除。

HTML:

    <select id="ddlTagName">
    <option value="1">Tag One</option>
    <option value="2">Tag Two</option>
    <option value="3">Tag Three</option>
</select>
<input id="btnInsertTag" type="button" value="Add"/>
<br/>

<div id="TagsHolder">
  <span class="tag">
      <span>Tag One HardCoded </span>
      <a class="remove">X</a>
  </span>

  <span class="tag">
      <span>Tag Two HardCoded </span>
      <a class="remove">X</a>
  </span>
</div>

JS:

    $("#btnInsertTag").click(function () {
    var selectedTagText = $("#ddlTagName option:selected").text();
    var selectedTagValue = $('#ddlTagName').val();
    var generateMarkup = '<span class="tag" data-value="' + selectedTagValue + '"><span>' + selectedTagText + ' </span><a class="remove">X</a></span>';
    $("#TagsHolder").append(generateMarkup);
});

$(".remove").click(function () {
    alert('click event triggered');
    $(this).parent(".tag").remove();
});

我的问题是为什么点击事件不是为了动态生成的 tags.

这里是Demo http://jsfiddle.net/c7aGg/8/

提前致谢


使用偶数委托代替

事件委托允许我们将单个事件侦听器附加到 父元素,将为匹配选择器的所有子元素触发, 这些孩子现在存在还是将来添加。

更多信息 https://learn.jquery.com/events/event-delegation/

$(document).on('click', '.remove', function () {.....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery 单击事件不会在使用 jquery 动态创建的元素上触发 的相关文章

随机推荐

  • 谷歌地理编码 API 不如使用地址的谷歌地图准确

    我有很多例子 其中谷歌地图返回确切的位置 而地理编码无法找到精确的匹配 并且仅提供紧密匹配的纬度 经度 这对我的目的没有好处 例如 谷歌地图中的 1729 State Road 8 auburn IN 46706 将我精确地定位到了沃尔玛配
  • 枚举是单数还是复数?

    枚举时使用单数还是复数 我认为声明中使用复数最有意义 enum Weekdays Monday Tuesday Wednesday Thursday Friday Saturday Sunday 但我认为在使用类型时使用单数更有意义 例如
  • 如何绘制 NxN 圆数组?

    我想绘制一个 NxN 的圆数组 为了形象化 我附上了我想要实现的目标的图像 我是 MatlLab 的新手 所以我尝试先绘制一个圆 下面是示例代码 n 2 10 size of mask M zeros n I 1 n x I n 2 mas
  • 将 freebase 向量与 gensim 一起使用

    我正在尝试使用 Google 发布的 freebase 单词嵌入 但我很难从 freebase 名称中获取单词 model gensim models Word2Vec load word2vec format freebase vecto
  • 无法安装 Visual Studio C++ 包含文件“excpt.h”

    我正在尝试编译一个 Visual Studio C 项目 但由于编译器报告 无法打开包含文件 excpt h 没有这样的文件或目录 我无法到达任何地方 该问题已在互联网上多次报告 但我找不到有关我的具体情况的任何帮助 问题不在于项目的包含路
  • Python:UnicodeDecodeError:“utf8”编解码器无法解码字节

    我正在将一堆 RTF 文件读入 python 字符串中 在某些文本上 我收到此错误 Traceback most recent call last File 11 08 py line 47 in
  • 用于“重复上一个命令”的 Visual Studio Code 命令

    是否有一个命令可以 重复上一个命令 如果没有 我该如何设置这样的东西 Basically what I want is to press some shortcut and for it to repeat whatever the las
  • 将模型的 IEnumerable 属性传递给控制器​​后操作 - ASP MVC

    我正在开发一个 asp MVC 应用程序并面临以下问题 这是一个工作代码 div for var i 0 i lt Model Filter itemDetails Count i table tr td Html TextBoxFor m
  • 在Javascript中查找多维数组的索引

    我在 JavaScript 中创建了一个多维数组 我想找到特定值的确切索引 该值将是用户输入 var array var k 0 for var i 0 i lt 10 i array i for var j 0 j lt 100 j k
  • 用于嵌入式服务器的 Web 技术

    我最近开始了一个针对嵌入式设备的新 Web 开发项目 并希望征求一些有关使用技术的建议 该设备将提供 HTML 页面 其中包括用于从 JSON 服务器检索数据的 AJAX 代码 我们暂时使用 Cherokee 作为 Web 服务器 但我们并
  • Apache Commons CLI - 在帮助输出中打印尾随参数

    我正在使用 Apache Commons CLI 1 2 来解析最后带有选项和额外参数的命令行 前任 mycmd d DIR extra stuff 我知道如何使用获得 额外 和 东西 CommandLine getArgs 但我不知道如何
  • 以十进制打印变量的地址

    我试图以十进制而不是十六进制打印数组元素的地址 但它不起作用 下面是代码和输出示例 include
  • mysql 查询多边形内的点 - 没有结果

    我很确定我在这里做错了很多事情 但我不确定是什么 该表 减去一些字段 CREATE TABLE IF NOT EXISTS stuff id int 10 unsigned NOT NULL AUTO INCREMENT lat decim
  • 使用标签强制 IE 11“用户代理字符串”

    我的网站在 IE11 中无法正常工作 我们都知道HTML标签允许开发者强制IE兼容模式 在例子中 效果很好 解决了 IE10 的可视化问题 但实际上在 IE11 上 即使Compatibility mode被设定为IE9 User agen
  • 如何使用 Fluent Assertion 比较两个属性不同的集合?

    我有公开课RuleInfo它是从内部类创建的Rule private static RuleInfo CreateRuleInfo Rule r return new RuleInfo RuleCode r RuleId DisplayNa
  • UIScrollView 中的 UIControll 未接收触摸事件

    I use 七开关 https github com bvogelzang SevenSwitch在我的项目中 我需要将其添加到UIScrollView但当我将其添加到滚动视图时 该控件似乎无法接收触摸事件 我尝试过子类化scrollvie
  • 使用媒体编解码器将 PCM 转换为 AAC

    我正在 Android Jelly Bean 中使用媒体编解码器类将 PCM 格式编码为 AAC 该文件已编码 但没有音乐播放器能够播放该文件 我在网上找不到任何工作代码或正确的文档 这是我的代码 public void doConvert
  • 将到期日期作为 TIMESTAMP 列的默认值

    有没有办法将列的默认值设置为过期日期 从CURRENT TIMESTAMP 我已经尝试过 ALTER TABLE table ADD COLUMN expire TIMESTAMP NOT NULL DEFAULT TIMESTAMPADD
  • Chrome 控制台和 Javascript 对象类型

    我想找到 Javascipt 对象的类型 构造函数的名称 但我一直只是用我尝试过的所有方法得到一个通用的 对象 我在网上搜索过 但没有找到对我有用的 Javascript 方法 它始终只返回对象构造函数类型作为通用 对象 然而当我在 Chr
  • Jquery 单击事件不会在使用 jquery 动态创建的元素上触发

    我正在尝试创建一个简单的功能 用户从下拉列表中选择一些值 然后单击 添加 按钮以标签的形式在下面的 div 中添加所选项目 每个添加的标签都有一个删除锚点 单击该锚点即可删除该标签 现在 当单击添加按钮时 标签将被正确插入 但是当我单击标签