자바스크립트 실무 유틸 함수 시리즈 17 - 이벤트 제어를 위한 유틸

2025. 5. 1. 11:44·Programing/javascript
반응형

이번 17편에서는 브라우저 이벤트를 보다 효율적으로 다루기 위한 유틸 함수들을 정리합니다. 이벤트 등록, 해제, 위임, 방지 등 다양한 실무 시나리오에서 필요한 핵심 함수들입니다.


✅ 1. on (이벤트 등록)

📌 기본적인 이벤트 리스너 등록

function on(el, type, handler) {
  if (el) el.addEventListener(type, handler);
}

📌 활용 예시

(예: 폼 제출 버튼 클릭 시 알림 표시)

const btn = document.getElementById('submitBtn');
on(btn, 'click', () => alert('제출되었습니다.'));

✅ 2. off (이벤트 해제)

📌 등록된 이벤트 리스너 제거

function off(el, type, handler) {
  if (el) el.removeEventListener(type, handler);
}

📌 활용 예시

(예: 이메일 입력창에 포커스 감지 후, 입력 종료 시 이벤트 제거)

const input = document.getElementById('email');
function handleFocus() {
  console.log('입력 시작');
}
on(input, 'focus', handleFocus);
// 이후 필요 시 해제
off(input, 'focus', handleFocus);

✅ 3. once (한 번만 실행되는 이벤트)

📌 단일 실행 후 자동 해제되는 이벤트

function once(el, type, handler) {
  const wrapper = function (e) {
    handler(e);
    el.removeEventListener(type, wrapper);
  };
  el.addEventListener(type, wrapper);
}

📌 활용 예시

(예: 유저가 페이지를 최초로 스크롤할 때만 이벤트 발생)

once(window, 'scroll', () => console.log('첫 스크롤 발생'));

✅ 4. delegate (이벤트 위임)

📌 상위 요소에 이벤트 위임 처리

function delegate(parent, selector, type, handler) {
  parent.addEventListener(type, function (event) {
    const targetElement = event.target.closest(selector);
    if (targetElement && parent.contains(targetElement)) {
      handler.call(targetElement, event);
    }
  });
}

📌 활용 예시

(예: 동적으로 생성된 리스트 항목 클릭 시 완료 처리)

const list = document.querySelector('.todo-list');
delegate(list, 'li', 'click', function () {
  this.classList.toggle('done');
});

✅ 5. preventDefault 및 stopPropagation 래퍼

📌 기본 동작 방지 + 버블링 중단 처리

function stopEvent(e) {
  e.preventDefault();
  e.stopPropagation();
}

📌 활용 예시

(예: form 요소의 기본 제출 동작 방지 및 사용자 안내 메시지 출력)

const form = document.querySelector('form');
on(form, 'submit', e => {
  stopEvent(e);
  alert('폼 제출이 차단되었습니다.');
});

✅ 결론

이벤트는 사용자 인터페이스의 반응성을 구성하는 핵심 요소입니다. 이번 시리즈에서 다룬 유틸 함수들을 통해 이벤트 관리를 더 효율적이고 안전하게 구현할 수 있습니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 실무 유틸 함수 시리즈 21 - 정규 표현식을 활용한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 20 - 배열 비교 및 동기화를 위한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 19 - 로컬 스토리지 / 세션 스토리지를 위한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 18 - 스크롤 관련 유틸  (1) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 16 - HTML 요소 조작을 위한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 15 - 폼 입력 검증을 위한 유틸  (1) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 14 - 반응형 UI 구현을 위한 유틸  (0) 2025.05.01
자바스크립트 실무 유틸 함수 시리즈 13 - 프론트엔드 성능 측정을 위한 간단한 유틸  (0) 2025.05.01
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 실무 유틸 함수 시리즈 19 - 로컬 스토리지 / 세션 스토리지를 위한 유틸
  • 자바스크립트 실무 유틸 함수 시리즈 18 - 스크롤 관련 유틸
  • 자바스크립트 실무 유틸 함수 시리즈 16 - HTML 요소 조작을 위한 유틸
  • 자바스크립트 실무 유틸 함수 시리즈 15 - 폼 입력 검증을 위한 유틸
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (437) N
      • 금융 (55) N
      • Programing (268) N
        • Algorithm (28)
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15) N
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (36)
        • Book (17)
        • 제품 (1)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31) N
        • 회고 (2) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    IT 관련
    jsp
    블로그
    자바스크립트유틸
    SQL
    읽고 싶은 책
    Java
    It
    자바스크립트
    사고 싶은 책
    디자인패턴
    IT블로그
    위시리스트
    php
    기초
    iT's MY LiFE
    JavaScript
    IT·컴퓨터
    자바
    js패턴
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
자바스크립트 실무 유틸 함수 시리즈 17 - 이벤트 제어를 위한 유틸
상단으로

티스토리툴바