You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中动态append追加的元素无法点击移除如何解决

问题原因

你当前使用的$(".items div").click()属于直接事件绑定,只会给页面初始加载阶段就已经存在的、匹配.items div选择器的元素绑定点击移除逻辑。后续通过append()动态追加的新项目,是在这次绑定执行完成后才插入DOM树的,没有被绑定对应的事件回调,自然无法触发移除操作。

修复方案

使用jQuery的事件委托机制,将事件绑定到页面加载时就已存在、不会动态销毁的静态父元素(这里就是.items容器)上,由父元素代理监听子元素的触发事件,无论子元素是初始渲染的还是后续动态追加的,都能正常响应逻辑。

修正后的核心JS代码如下:

$(document).ready(function() {
  let nextItem = 4;
  // 事件委托:绑定到静态父容器,监听内部div的点击事件
  $(".items").on("click", "div", function() {
    $(this).remove();
  });
  $(".btn").click(function() {
    $(".items").append(`<div id="${nextItem}"><img src="https://picsum.photos/id/${nextItem - 1}/200/100" alt=""></div>`);
    nextItem++;
  })
});

如果你需要按照描述的右键点击移除的交互,只需要把事件名从click替换为contextmenu,同时加一行代码阻止浏览器默认右键菜单即可:

$(".items").on("contextmenu", "div", function(e) {
  e.preventDefault(); // 屏蔽浏览器默认右键菜单
  $(this).remove();
});

对应的完整HTML结构无需修改:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div class="items">
    <div id="1"><img src="https://picsum.photos/id/0/200/100" alt=""></div>
    <div id="2"><img src="https://picsum.photos/id/1/200/100" alt=""></div>
    <div id="3"><img src="https://picsum.photos/id/2/200/100" alt=""></div>
  </div>
  <button class="btn">+</button>
</div>

内容的提问来源于stack exchange,提问作者Amin Sanei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:09:22