>  기사  >  웹 프론트엔드  >  바닐라 JavaScript에서 이벤트 위임을 효과적으로 구현하려면 어떻게 해야 합니까?

바닐라 JavaScript에서 이벤트 위임을 효과적으로 구현하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-24 08:25:10186검색

How Can I Effectively Implement Event Delegation in Vanilla JavaScript?

바닐라 JavaScript의 이벤트 위임: 종합 가이드

바닐라 JavaScript에서 이벤트 위임을 달성하면 이벤트 리스너를 처리하는 효율적이고 유지 관리 가능한 방법이 제공됩니다. 내장된 프로토타입을 수정하는 jQuery의 이벤트 위임과 달리 바닐라 JavaScript는 '.closest()'와 함께 이벤트 위임을 사용하여 보다 강력한 접근 방식을 제공합니다.

jQuery 이벤트 위임을 바닐라 JavaScript로 변환

jQuery 예제를 번역하려면:

$('#main').on('click', '.focused', function(){
    settingsPanel();
});

바닐라로 JavaScript에서는 다음을 사용합니다.

document.querySelector('#main').addEventListener('click', (e) => {
  if (e.target.closest('.focused')) {
    settingsPanel();
  }
});

'.closest()' 메서드는 클릭한 요소에 '.focused' 선택기와 일치하는 상위 요소가 있는지 확인합니다. 그렇다면 'settingsPanel()' 함수를 호출합니다.

복잡한 이벤트 연결을 위한 최적화

특히 중첩된 요소를 처리할 때 성능을 향상하려면 조기 반환:

document.querySelector('#main').addEventListener('click', (e) => {
  if (!e.target.closest('.focused')) {
    return;
  }
  // code of settingsPanel here, if it isn't too long
});

이 접근 방식은 '.focused' 선택기가 없을 때 불필요한 코드 실행을 방지합니다.

실시간 데모

다음 코드 조각은 '.closest()'와 함께 바닐라 JavaScript의 이벤트 위임을 사용하는 방법을 보여줍니다.

document.querySelector('#outer').addEventListener('click', (e) => {
  if (!e.target.closest('#inner')) {
    return;
  }
  console.log('vanilla');
});

$('#outer').on('click', '#inner', () => {
  console.log('jQuery');
});

이 예에서 '#inner' 요소를 클릭하면 "vanilla"가 콘솔에 기록되어 바닐라를 보여줍니다. JavaScript의 이벤트 위임.

위 내용은 바닐라 JavaScript에서 이벤트 위임을 효과적으로 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.