javascript - Javascript DOM 删除列表
问题描述
我正在尝试创建一个待办事项列表。
我正在尝试访问图标标签,以便能够单击图标以删除列表。
如何通过e.target
在我的if
条件下使用或其他方式专门针对删除图标?我删除了我的其他代码,比如添加任务等,只保留了删除的部分:
<div><i class="fas fa-trash-alt"></i></div>
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript + DOM</title>
<link rel="stylesheet" type=text/css href="style.css">
<!-- Bootstrap Core CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/5f492e2f9c.js" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<ul class="list-group">
<div>
<li class="list-group-item d-flex">Ivann
<div class="custom-control custom-radio custom-control-inline ml-auto">
<input type="radio" class="custom-control-input" id="defaultInline1" name="inlineDefaultRadiosExample">
<label class="custom-control-label" for="defaultInline1">Yes</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInline2" name="inlineDefaultRadiosExample">
<label class="custom-control-label" for="defaultInline2">No</label>
</div>
<div><i class="fas fa-trash-alt"></i></div>
</li>
</div>
</ul>
</div>
<script type="text/javascript" src="oldapp.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>
</html>
JavaScript:
var ul = document.querySelector("ul");
function removeListAfterClick(e){
if(e.target.parentElement.classList.contains('fa-trash-alt')){
console.log('test');
}
e.preventDefault();
}
ul.addEventListener('click',removeListAfterClick);
解决方案
您在此处以事件的 parentElement 为目标,但您正在尝试访问目标子项。
querySelector 可以很好地浏览元素列表event.target.querySelector('.fa-trash-alt')
var ul = document.querySelector('ul');
const icon = document.querySelector('i.fa-trash-alt');
const iconClass = "fas fa-trash-alt";
function removeListAfterClick(e) {
e.target.className.includes(iconClass) ? icon.remove() : null
e.preventDefault();
}
ul.addEventListener('click', removeListAfterClick);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>JavaScript + DOM</title>
<link rel="stylesheet" type=text/css href="style.css">
<!-- Bootstrap Core CSS -->
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous"
/>
<script
src="https://kit.fontawesome.com/5f492e2f9c.js"
crossorigin="anonymous"
></script>
</head>
<body>
<div class="container">
<ul class="list-group">
<div>
<li class="list-group-item d-flex">
Ivann
<div
class="custom-control custom-radio custom-control-inline ml-auto"
>
<input
type="radio"
class="custom-control-input"
id="defaultInline1"
name="inlineDefaultRadiosExample"
/>
<label class="custom-control-label" for="defaultInline1"
>Yes</label
>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input
type="radio"
class="custom-control-input"
id="defaultInline2"
name="inlineDefaultRadiosExample"
/>
<label class="custom-control-label" for="defaultInline2"
>No</label
>
</div>
<div><i class="fas fa-trash-alt"></i></div>
</li>
</div>
</ul>
</div>
</body>
</html>
推荐阅读
- reactjs - 概念类型表保存到数据库
- express - 为具有自定义域的电子邮件配置 nodemailer
- verilog - Verilog中的''_''是什么?
- javascript - bootstrap 5导航栏切换按钮不起作用
- .net - .NET | AAD 身份验证总是失败
- assembly - 编码 8 位操作数大小?是否有类似 16 位的前缀?
- python - 如何在“n”个块中使用巨大的 csv 数据?
- kotlin - 科特林?vs ?.let {}
- cordova - 如何在 Cordova 中关闭应用程序后启动服务
- mysql - 是否可以通过将所需列从一个添加到另一个来避免两个表上的缓慢连接,还是我的关系不好?