[英]how to close an element upon the click of another element
我希望每个元素在使用纯 javascript 单击“x”图标时关闭。 我实际上是 javascript 新手,所以我正在尝试一些东西。 以下是我的代码以及我能够做的事情。
我希望每个元素在单击“x”图标时关闭。
var closeBtnTask = document.querySelectorAll(".times"); for (var i = 0; i < closeBtnTask.length; i++) { closeBtnTask[i].addEventListener("click", function() { var panel = document.querySelectorAll(".taskpanel"); for (var x = 0; x < taskpanel.length; x++) { Things[x].style.display = "none"; } }); }
.task-box { float: left; width: 100%; } .task-wrapper { width: 400px; background: #f5f5f5; } ul.mytask { padding: 0px; margin: 0px; padding-left: 5px; } ul.mytask li { list-style: none; line-height: 34px; border-bottom: 1px solid #ddd; } .mytask span { float: right; padding-right: 10px; cursor: pointer; }
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> <div class="task-box"> <div class="task-wrapper"> <ul class="mytask"> <li class="taskpanel">First Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Second Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Third Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Fourth Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Fifth Task <span><i class="fa fa-close times"></i></span></li> </ul> </div> </div>
你的代码有点错误,我在这里修复了https://jsfiddle.net/L81t9ym6/
var closeBtnTask = document.querySelectorAll(".times");
for (var i = 0; i < closeBtnTask.length; i++) {
closeBtnTask[i].addEventListener("click", function() {
var panel = document.querySelectorAll(".taskpanel");
for (var x = 0; x < panel.length; x++) {
panel[x].style.display = "none";
}
});
}
注意:当您单击任何 x 时,这将关闭每个元素,而不仅仅是单击发生的元素。
编辑
这是关闭您单击的面板的代码
var closeBtnTask = document.querySelectorAll(".times");
for (var i = 0; i < closeBtnTask.length; i++) {
closeBtnTask[i].addEventListener("click", function(ev) {
var tp = ev.target.closest('.taskpanel');
tp.style.display = "none";
});
}
我不知道 javascript 现在有一个原生的.closest
方法,这很有用! https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
你也可以用普通的 JS 委托
document.querySelector(".mytask").addEventListener("click",function(e) { let tgt = e.target; if (tgt.matches(".fa-close")) tgt.closest("li").style.display="none"; })
.task-box { float: left; width: 100%; } .task-wrapper { width: 400px; background: #f5f5f5; } ul.mytask { padding: 0px; margin: 0px; padding-left: 5px; } ul.mytask li { list-style: none; line-height: 34px; border-bottom: 1px solid #ddd; } .mytask span { float: right; padding-right: 10px; cursor: pointer; }
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> <div class="task-box"> <div class="task-wrapper"> <ul class="mytask"> <li class="taskpanel">First Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Second Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Third Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Fourth Task <span><i class="fa fa-close times"></i></span></li> <li class="taskpanel">Fifth Task <span><i class="fa fa-close times"></i></span></li> </ul> </div> </div>
在这里使用这个 Javascript 工作演示https://jsfiddle.net/Lg7bjr3k/
$('.times').click(function(){
$(this).parent().parent().hide();
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.