Jak zkontrolovat, zda prvek je přítomen v případě, bublající šíření strom?

0

Otázka

Existuje nějaký alternativní způsob, jak to udělat?

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()
}

I. e., zkontrolujte, zda e.target je uvnitř elementu s třídou disableEvent.

dom-events javascript
2021-11-22 16:48:10
2

Nejlepší odpověď

2

Můžete volat .closest() s voličem, který odpovídá třídě.

hammertime.on('pan', function(e) {
  if (!e.target.closest(".disableEvent")) {
    move();
  }
});
2021-11-22 17:13:42
0

Spolehlivý způsob je rekurzivně udržet kontrolu na rodiče uzlu;

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)
    )
  }

Výhod, včetně kontroly jiné věci příliš.

2021-12-01 05:32:26

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................