如何检查事件冒泡传播树中是否存在元素?
How to check if an element is present in the event bubbling propagation tree?
有没有其他方法可以做到这一点?
hammertime.on('pan', function(e) {
if(e.target.classList.contains("disableEvent")) return false
if(e.target.parentElement?.classList?.contains("disableEvent")) return false
if(e.target.parentElement?.parentElement?.classList?.contains("disableEvent")) return false
move()
}
即检查 e.target
是否在具有 class disableEvent
的元素内。
您可以使用与 class 匹配的选择器调用 .closest()
。
hammertime.on('pan', function(e) {
if (!e.target.closest(".disableEvent")) {
move();
}
});
一个万无一失的方法是递归地不断检查节点的父节点;
function hasParentWithMatchingSelector (target:Node, selector:string) {
const allSubMenus : NodeListOf<Element> = document.querySelectorAll(selector)
let myArray = Array.from(allSubMenus)
return [...myArray].some(el =>
el !== target && el.contains(target)
)
}
福利包括检查其他事情。
有没有其他方法可以做到这一点?
hammertime.on('pan', function(e) {
if(e.target.classList.contains("disableEvent")) return false
if(e.target.parentElement?.classList?.contains("disableEvent")) return false
if(e.target.parentElement?.parentElement?.classList?.contains("disableEvent")) return false
move()
}
即检查 e.target
是否在具有 class disableEvent
的元素内。
您可以使用与 class 匹配的选择器调用 .closest()
。
hammertime.on('pan', function(e) {
if (!e.target.closest(".disableEvent")) {
move();
}
});
一个万无一失的方法是递归地不断检查节点的父节点;
function hasParentWithMatchingSelector (target:Node, selector:string) {
const allSubMenus : NodeListOf<Element> = document.querySelectorAll(selector)
let myArray = Array.from(allSubMenus)
return [...myArray].some(el =>
el !== target && el.contains(target)
)
}
福利包括检查其他事情。