개발이야기/jQuery

[jQuery] 이벤트 등록/해제하기 사용법,예제($(document).on(),$(document).off())

후린개발자 2023. 7. 19.
반응형

$(document).on()과 $(document).off()는 이벤트를 처리하고 등록하고 해제하는 메서드입니다. 
이벤트 처리는 웹 페이지의 특정 상황에서 코드를 실행하는 데 사용됩니다. $(document)은 문서 전체를 나타내는 jQuery 객체를 의미하며, 
이벤트 처리를 문서 전역에서 수행하려는 경우에 자주 사용됩니다.

 

1. $(document).on()

  • $(document).on() 메서드는 지정된 이벤트를 감지하고 처리하기 위해 요소에 이벤트 핸들러를 등록합니다. 
$(document).on(eventType, selector, handler);
  • eventType: 이벤트의 종류를 지정합니다. ('click', 'mouseenter', 'keyup' 등)
  • selector: 이벤트를 발생시킬 요소의 선택자를 지정합니다. 이벤트가 발생한 요소가 이 선택자와 일치할 경우에만 핸들러가 실행됩니다. 이 부분을 null로 둘 수도 있으며,  
    이 경우 모든 해당 이벤트가 문서 내의 요소에서 발생할 때 핸들러가 실행됩니다.
  • handler: 이벤트가 발생했을 때 실행할 함수 (이벤트 핸들러)를 지정합니다.

2. $(document).off()

  • $(document).off() 메서드는 등록된 이벤트 핸들러를 제거하여 이벤트를 더 이상 처리하지 않도록 합니다. 
    이 메서드는 $(document).on()을 사용하여 등록한 이벤트 핸들러와 짝을 이루며, 이를 사용하여 더 이상 필요하지 않은 이벤트 처리를 해제할 수 있습니다.
$(document).off(eventType, selector, handler);
  • eventType: 이벤트의 종류를 지정합니다. 이 부분을 생략하면 모든 이벤트 핸들러가 제거됩니다.
  • selector: 이벤트를 발생시킨 요소의 선택자를 지정합니다. 이 부분을 생략하면 해당 이벤트의 모든 핸들러가 제거됩니다.
  • handler: 제거할 이벤트 핸들러 함수를 지정합니다. 이 부분을 생략하면 해당 이벤트에 연결된 모든 핸들러가 제거됩니다.

 

3. 예제코드

 

아래 예제 코드는 이벤트 핸들러를 통해서 버튼이 클릭될 때마다 메시지 상태를 확인하여 메시지를 노출/숨김 처리 하고 있습니다.
클릭된 횟수가 3번 이면 $(document).off() 를 사용하여 이벤트 핸들러를 해제합니다. 이후 사용자에게 메시지를 표시합니다.

<!DOCTYPE html>
<html>
<head>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<script>
  let toggleCount = 0;

  // 클릭 이벤트 핸들러 함수
  function toggleMessage() {
    $("#message").toggle();
    if ($("#message").is(":visible")) {
      console.log("메시지가 나타났습니다!");
    } else {
      console.log("메시지가 사라졌습니다!");
    }

    toggleCount++;

    // 이벤트 핸들러를 해제하는 조건
    if (toggleCount === 3) {
      $(document).off('click', '#toggleButton', toggleMessage);
      alert("버튼을 더 이상 클릭할 수 없습니다.");
    }
  }

  // 버튼 클릭 이벤트 핸들러 등록
  $(document).on('click', '#toggleButton', toggleMessage);
</script>
<body>
	<button id="toggleButton">메시지 토글</button>
	<div id="message" style="display: none;">메시지가 나타났습니다!</div>
</body>
</html>

 

반응형

댓글

💲 추천 글