为了账号安全,请及时绑定邮箱和手机立即绑定

Jquery 不会对 Jquery 创建的文本做出反应

Jquery 不会对 Jquery 创建的文本做出反应

慕哥6287543 2023-06-09 15:55:20
我想要做的是在按下按钮时将元素添加到列表中,然后再次按下按钮能够删除任何项目。这是我的意思的最小工作示例:$('.delete-item').click(function() {  $(this).parent().text("DELETED")})$('button').click(function() {  $('ul').append(`<li>Appended item <a class="delete-item" href="#">Delete item</a></li>`)})<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><ul>  <li>List item 1 <a class="delete-item" href="#">Delete item</a></li>  <li>List item 2 <a class="delete-item" href="#">Delete item</a></li></ul><button type="button">Add item</button>在这里,您可以将项目添加到无序列表并“删除”已经存在的项目,现在,您可以很好地删除预制项目,但是如果您尝试删除附加项目,无论出于何种原因,您都可以't。这是如何固定的?谢谢!
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

$('.delete-item').click(...)仅将事件侦听器附加到现有项目。像这样使用事件委托:

$("ul").on("click", ".delete-item", function() {
    $(this).parent().text("DELETED")
});

使用事件委托,您可以将事件侦听器附加到 DOM 中已存在的祖先(此处为元素<ul>),并监视后代上的事件,无论它们是否已经存在或动态添加。

演示:

$("ul").on("click", ".delete-item", function() {

  $(this).parent().text("DELETED")

});


$("button").click(function() {

  $("ul").append(`<li>Appended item <a class="delete-item" href="#">Delete item</a></li>`)

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul>

  <li>List item 1 <a class="delete-item" href="#">Delete item</a></li>

  <li>List item 2 <a class="delete-item" href="#">Delete item</a></li>

</ul>


<button type="button">Add item</button>


查看完整回答
反对 回复 2023-06-09
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信