我想测试点击是否在特定层次结构中的元素上。
使用:
var elements = parentElement.getElementsByTagName("*");
我可以将所有元素放入数组中,但是我无法正确地进行测试:
function isClicked(e){
if(elements.indexOf(e.target) != -1){
//do something
}
};
我该怎么做呢?感谢...
(PS我正在尝试创建一个点击离开功能,点击身体中的任何内容除了显示的信息将关闭它)
答案 0 :(得分:0)
您可以使用Underscore的包含功能。所以,你的情况应该是这样的:
if (_.contains(elements, e)) {
// ...
}
答案 1 :(得分:0)
尝试以下内容:
function isClicked(e){
//check e.currentTarget.children()
};
答案 2 :(得分:0)
var button = document.querySelector('button');
var dialog = document.querySelector('.dialog');
button.addEventListener('click', function () {
dialog.classList.add('open');
});
document.body.addEventListener('click', function (e) {
if (button !== e.target && dialog !== e.target && !dialog.contains(e.target)) {
dialog.classList.remove('open');
}
});

.dialog:not(.open) {
display: none;
}
.dialog {
background-color: yellow;
}
span {
color: red;
}

<button>Open dialog</button>
<div class="dialog">
<h1>Hello, World!</h1>
<p>Hello, World! <span>Nested element<span></p>
</div>
<p>Click somewhere here to close the dialog! <span>Nested element</span></p>
&#13;