javascript - 使用jquery删除动态元素
问题描述
最近我尝试创建动态元素并尝试删除它们。问题是,每次我想删除特定元素时,删除的元素是第一个创建的元素。我也已经尝试过使用live()
和on()
方法。知道为什么会这样吗?感谢帮助
<body>
<h2>To Do List</h2>
<div id="inputfield">
<input type="text" placeholder="add here" id="input">
<button onclick="addlist()">Add</button>
</div>
<div id="content">
</div>
addlist = () => {
let input = document.getElementById("input").value;
let html = '';
html += `<div style="display: flex; justify-content: center; flex-direction: row" class="main">
<div id="list">
<span id="isilist">` + input + `</span>
</div>
<div id="option">
<button id="deletebtn">delete</button>
</div>
</div>`
$("#content").append(html)
}
$("#content").on('click', 'button', function(){
$("#list").remove()
$("#option").remove()
})
解决方案
问题是每次您创建一个新元素时,它们都有相同的 id="list" 因此当您尝试删除它时,浏览器不知道您指的是哪个 id("#list") 并因此删除了第一。因此,
请将您的删除代码更改为:
$("#content").on('click', 'button', function(){
$(this).parent().prev().remove();
$(this).parent().remove();
})
这也将删除按钮的父元素和前一个元素。
推荐阅读
- java - CollectionUtils.isEmpty(list) 是如何工作的?
- angular - 如何检查互联网连接并使用本地存储数据
- python - 使 Python 异步请求更快
- c# - 如何更改剃须刀页面中的对象类型
- sql - 正则表达式匹配除特定单词之外的所有内容
- javascript - 如何通过javascript获取表格中的所有输入日期格式?
- c# - 多种数据库连接类型之间的 C# WPF MVVM 更改
- marklogic - XDMP-INVZIP:尝试获取 excel 文件时 zip 文件无效
- azure - Webjob 未处理主题订阅上发布的所有消息
- chef-infra - 无法通过主机名但通过 IP 地址访问厨师服务器