javascript - 删除按钮的事件侦听器不起作用 - Javascript
问题描述
我正在制作一个删除表数据的按钮,由于某种原因,当我单击该按钮时,我的单击事件侦听器什么也不做。如果您想查看所有代码,请查看codepen
const showExpenses = () => {
const table = document.getElementById('expenseTable');
table.innerHTML = '';
for(let i = 0; i < expenses.length; i++){
expenseTable.innerHTML += `
<tr >
<td class="expItem">${expenses[i].name}</td>
<td class="expItem">${expenses[i].date}</td>
<td class="expItem">$${expenses[i].amount}</td>
<td><a class="deleteButton" onclick="handleRemove(${expenses[i].id})">
Delete</td>
</tr>
`;
}
}
//Remove buttom
const handleRemove = e => {
const item = e.target.closest('.expItem');
// Remove the listener, to avoid memory leaks.
item.querySelector('.deleteButton')
.removeEventListener('onclick', handleRemove);
item.parentElement.removeChild(item);
};
解决方案
实际上,这样做的方法是在所有删除按钮上设置一个事件侦听器,并为它们提供 data-id 属性,以便您可以在单击时检索 id。然后访问最近的<tr>
最后使用jQueryremove()
expenseTable.innerHTML += `...
<td><a class="deleteButton" href="#" data-id="${expenses[i].id}">Delete</a></td>
...
JS:
$(document).ready(function() {
$('body').on('click', '.deleteButton', function(e) {
e.preventDefault(); // prevent the href default
// if you need to access the id...
let deleteID = $(this).data('id');
$(this).closest('tr').remove();
})
})
推荐阅读
- c# - 单元测试中的配置值永远不会被设置
- c# - MySQL、C# 和 C# 之间的字符编码
- android - 更新gradle后将多模块项目发布到工件停止工作
- css - 如何在 reacttjs 中修复 video.js 包的 css
- swift - 数据请求为零,处理来自 REST API 的请求时出现问题
- react-admin - 如何在 ArrayImput 和 SimpleFormIterator 中对输入进行水平排序
- macros - Elixir:defmacro 和 pipline 的基准测试
- java - 如果我使用 getText() 方法,有什么方法可以只获取 json 数据
- html - 获取@Html.DropDownList 或选择值
- git - 将最新提交压缩到最后一次合并提交