我试图用vanilla JS(没有jQuery)编写一个脚本,如果有人点击这个元素之外,它将从页面中删除一个元素.
但是,它div
有许多嵌套元素,我设置的方式是,即使单击第一个元素内的元素,它也会消失.
示例标记:
This is the Master Parent nodeNot Parent NodeGrandbaby Node
所以我想,无论元素嵌套有多深,它都会检查它是否是 目前这就是我所拥有的,而且我知道我写的内容存在一些严重的谬误:
Josh Crozier..
37
由于 这里的例子 在下面的代码段中,事件侦听器附加到文档.如果触发click事件的元素是不能的后裔
由于 这里的例子 在下面的代码段中,事件侦听器附加到文档.如果触发click事件的元素是不能的后裔
div
和它的后代应该只点击父母之外时,可以动态删除div
.
function remove(id) {
return (elem = document.getElementById(id)).parentNode.removeChild(elem);
}
document.addEventListener("click", function (e) {
remove('parent-node');
});
event.target
是被点击的元素的引用,你可以检查,看看是否#parent-node
是event.target
或者如果它包含 event.target
的后代元素.#parent-node
而不是 #parent-node
,则该元素被删除.document.addEventListener("click", function(e) {
var element = document.getElementById('parent-node');
if (e.target !== element && !element.contains(e.target)) {
element.parentNode.removeChild(element);
}
});
document.addEventListener("click", function(e) {
var element = document.getElementById('parent-node');
if (e.target !== element && !element.contains(e.target)) {
element.parentNode.removeChild(element);
}
});
#parent-node {
background-color: #f00;
}
1> Josh Crozier..:event.target
是被点击的元素的引用,你可以检查,看看是否#parent-node
是event.target
或者如果它包含 event.target
的后代元素.#parent-node
而不是 #parent-node
,则该元素被删除.document.addEventListener("click", function(e) {
var element = document.getElementById('parent-node');
if (e.target !== element && !element.contains(e.target)) {
element.parentNode.removeChild(element);
}
});
document.addEventListener("click", function(e) {
var element = document.getElementById('parent-node');
if (e.target !== element && !element.contains(e.target)) {
element.parentNode.removeChild(element);
}
});
#parent-node {
background-color: #f00;
}
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有