>  기사  >  웹 프론트엔드  >  JavaScript의 DOM 개체에서 이벤트 리스너를 어떻게 제거할 수 있습니까?

JavaScript의 DOM 개체에서 이벤트 리스너를 어떻게 제거할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-25 05:46:02262검색

How Can I Remove Event Listeners from DOM Objects in JavaScript?

DOM 객체에서 이벤트 리스너 제거

모든 이벤트 핸들러 제거

객체에서 모든 이벤트 핸들러를 제거하려면 요소를 복제하고 교체할 수 있습니다.

<code class="javascript">var clone = element.cloneNode(true);</code>

이 방법은 속성과 하위 항목을 유지하지만 DOM 속성은 변경하지 않습니다.

익명 함수로 이벤트 핸들러 제거

이벤트를 제거할 수 있습니다. 반환된 함수에 대한 참조를 저장하고 모든 이벤트를 제거하는 별도의 함수를 생성하여 익명 함수가 있는 핸들러:

<code class="javascript">var _eventHandlers = {};

const addListener = (node, event, handler, capture = false) => {
  if (!(event in _eventHandlers)) {
    _eventHandlers[event] = []
  }
  _eventHandlers[event].push({ node: node, handler: handler, capture: capture })
  node.addEventListener(event, handler, capture)
}

const removeAllListeners = (targetNode, event) => {
  _eventHandlers[event]
    .filter(({ node }) => node === targetNode)
    .forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture))

  _eventHandlers[event] = _eventHandlers[event].filter(
    ({ node }) => node !== targetNode,
  )
}</code>

이렇게 하면 다음을 사용하여 이벤트 리스너를 추가하고 제거할 수 있습니다.

<code class="javascript">addListener(div, 'click', eventReturner(), false)
removeAllListeners(div, 'click')</code>

직접 이벤트 처리

익명 함수를 사용하여 이벤트를 처리하는 경우 간단히 직접 추가하고 제거할 수 있습니다.

<code class="javascript">function handler() {
  dosomething();
}

div.addEventListener('click',handler,false);</code>

위 내용은 JavaScript의 DOM 개체에서 이벤트 리스너를 어떻게 제거할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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