🚨 Home section page에서 해당 페이지로 이동하는 page-box를 입력할 때, box 안에 있는 element를 클릭하면, event가 작동하지 않는 버그를 발견했다.


🚩 해결 1.

→ pointer-events: none;

box안에 있는 태그들의 style에 pointer-event를 none을 주면 클릭 했을 때, event를 받지 않는다.

EX)

.box i {
  pointer-events: none;
}
.box_basic {
  pointer-events: none;
}
.box_hover {
  pointer-events: none;
}

🚩 해결 2.

→ event를 부여하고 싶은 해당 Node가 나올 때 까지 ChildNode에서부터 거슬러 올라온다.

EX)

function homeMainBoxClickHandler(e) {
  let elem = e.target;
  while (!elem.classList.contains("box")) {
    elem = elem.parentNode;
    if (elem.nodeName === "BODY") {
      elem = null;
      return;
    }
  }
  scrollIntoView(elem.dataset.page);
}

부모 노드에 “box”를 포함한 노드 그 위로 올라가면 console에 에러가 출력된다.

Body까지 올라간 후, 그 element에 null을 할당하면, return문에 의해 종료된다.

또는 closest( )매소드를 쓸 수 있다.

function homeMainBoxClickHandler(e) {
  let elem = e.target;
  while (!elem.classList.contains("box")) {
    elem = elem.parentNode;
    if (elem.closest("#home")) {
      elem = null;
      return;
    }
  }
  scrollIntoView(elem.dataset.page);
}

가장 가까운 부모 Node 중, ID가 home인 경우, return문에 의해 종료된다.