javascript - (JS 事件委托)如何删除目标元素?
问题描述
我现在正在为事件委托苦苦挣扎一个星期。
单击“删除”按钮时,我试图删除“li”元素。到目前为止,我已经设法工作,但是背后的问题是,当我只想删除一个目标“li”时,所有“li”项目都被删除了。
如何修复此代码?
'''
//HTML code for ul and li
<div>
<ul id="list">
</ul>
</div>
//JS code adding inner HTML code for 'edit', 'update' and 'delete' buttons
document.querySelector(".Add").addEventListener("click", function(){
data.date.push(date.value);
data.hours.push(hours.value);
const addHTML = `<li><strong>${data.date[i]}</strong> You have worked ${data.hours[i]} hours</li><button class="edit">Edit</button><button class="update">Update</button><button class="delete">Delete</button>`
document.querySelector('ul').insertAdjacentHTML('afterbegin', addHTML);
i++;
});
//JS code to delete the 'li' element when 'delete' button clicked
document.getElementById('list').addEventListener('click', function(e) {
const tgt = e.target;
const parent = tgt.closest('li');
if(tgt.classList.contains('edit')){
console.log('edit')
}
if(tgt.classList.contains('update')){
console.log('update')
}
if(tgt.classList.contains('delete')){
console.log(tgt.closest('li'))
tgt.parentNode.remove();
}
});
'''
解决方案
等等……再努力之后,我得到了答案!因此,当我使用“insertAdjacentHTML”添加 HTML 代码时,我嵌套了使用元素添加的 HTML 代码。
现在,当我单击目标按钮时,它将删除父元素
希望这可以帮助任何在同样问题上苦苦挣扎的人。
推荐阅读
- javascript - 显示来自 promise firebase 的数据
- javascript - require() 不接受具有字符串的 javascript 变量
- javascript - 带有php变量的倒数计时器
- javascript - Javascript 代理给出非法调用错误
- android-studio - 读取超时错误 builder.jar (com.android.tools.build:builder:3.2.1) - Flutter - Android Studio
- firebase - Firebase Crashltytics:崩溃 ID
- maven - PITEST 变异覆盖正在返回 SocketException
- jekyll - 如何在 Github 托管的 Jekyll 博客中添加按钮?
- sql - 如何连接两个时间序列查询
- intellij-idea - 在 intellij 中增加最近文件的数量