javascript - 单击不适用于新元素

标签 javascript jquery

遇到问题 "$(".edit").on('click', function(){$(this).parent().toggleClass('editMode');"- 它不适用于新元素。 ..

$('#addButton').click(function(){
$("#incomplete-tasks").append('<li><input type="checkbox"><label>' + $('#new-task').val() + '</label><input type="text"><button class="edit">Edit</button><button class="delete">Delete</button></li>')
});

$(".edit").on('click', function(){
  $(this).parent().toggleClass('editMode');
});
<p>
  <label for="new-task">Add Item</label>
  <input id="new-task" type="text">
  <button id="addButton">Add</button>
</p>

<h3>Todo</h3>
<ul id="incomplete-tasks">
  <li>
    <input type="checkbox">
    <label>Pay Bills</label>
    <input type="text">
    <button class="edit">Edit</button>
    <button class="delete">Delete</button>
  </li>

最佳答案

您需要事件委托(delegate)。

Event delegation allows us to attach a single event listener, to a parent element, that will fire for all descendants matching a selector, whether those descendants exist now or are added in the future.

$("#incomplete-tasks").on("click", ".edit", function() { ... });

这里有一个很好的例子:https://learn.jquery.com/events/event-delegation/

关于javascript - 单击不适用于新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215894/

相关文章:

jquery - [jquery]如何动态添加文件上传?

javascript - 状态数组在 React.js 中无法正确呈现

javascript - 如何检测 google maps PolyLine 叠加层上的点击事件?

javascript - 没有\p{L} 用于 JavaScript 正则表达式?在 JS 正则表达式中使用 Unicode

javascript - jQuery 菜单 if 语句故障

javascript - 使用javascript创建文本文件

javascript - 即使包含元素,MVC + Jquery 验证器也不适用于禁用字段

javascript - 如何在一个页面上播放不同的音频文件

javascript - 如何在用户按下刷新按钮时限制随机播放

jquery - 链接在 Safari 和 chrome 中需要点击 2 次,但在 Firefox 中只需要点击 1 次