Element click outside event

情境

判斷使用者是否點擊對象 element 外部
對象 element 可能是多層的物件
例如: 點擊 modal 外,關閉該 modal

e.g.

<div class="my-element">
  <h3>title</h3>
  < article >content</article >
</div>

h3, article tag 都屬於對象 element 內 (.my-element)


// 註冊事件
document.addEventListener('click', closeWhenClickOutside);

// 定義事件
closeWhenClickOutside(event) {
  if (event && document.querySelector('.modal-container').contains(event.target)) {
    // 使用者點擊於對象 element (.my-element) 內
    return;
  }
  // 使用者點擊對象 element 外
}

// 離開或結束時記得反註冊事件
document.removeEventListener('click', closeWhenClickOutside);

demo code pen 待補…