javascript - 如何让 Javascript 函数在新创建的元素上工作?
问题描述
我正在制作一个 2do 应用程序作为个人项目。我已经获得了删除 lis 并添加新 lis 的代码,但是当我单击“x”跨度时,新的 lis 不会自行删除。
// delete done todos
for (var i = 0; i < deleteTodo.length; i++) {
deleteTodo[i].addEventListener('click', function(e) {
this.parentNode.remove();
});
}
// add a todo task
input.addEventListener('keypress', function(e) {
if (event.keyCode === 13) {
var newTodo = input.value;
var newLi = document.createElement('li');
newLi.innerHTML = '<span>X</span> ' + newTodo;
this.value = '';
console.log(newLi);
ul.appendChild(newLi);
}
});
解决方案
您想委托该事件。
document.addEventListener('click', (event)=>{
if(event.target.matches('li')){
// this will fire on any li tags that are clicked, even if dynamically added
}
})
推荐阅读
- mysql - 将数据从日期时间列移动到日期列
- java - ArrayoutofBounds 发现异常无法解决
- r - 如何在 Ggplot2 标签中使用“符号 = 数字”和“字符 = 数字”
- java - 为什么 java 编译器需要一个看似无用的包装函数来类型检查泛型边界?
- r - 在R中绘制小提琴图
- reactjs - Redux-Toolkit 查询授权案例
- javascript - 输入装饰器在 Angular 中不起作用(属性“名称”没有初始值设定项,并且未在构造函数中明确分配。)
- angularjs - 如何在具有溢出属性的 div 中显示完整的工具提示(未裁剪)?
- c# - 从文件中删除文本
- android - com.fyber:fyber-sdk:8.22.1 没有缓存版本可用于离线模式