>  Q&A  >  본문

javascript - jQuery는 이벤트를 제거하기 위해 off()를 어떻게 구현합니까?

jQuery에서 이벤트를 바인딩하는 각 메서드에는 이벤트 바인딩을 제거하는 해당 메서드가 있다는 것을 알고 있습니다. 예를 들어 off()는 on()에 해당하고, unbind()는 바인딩()에 해당하며, die()는 live에 해당합니다. ().이런 종류의 익명 이벤트 번들링이 어떻게 구현되는지 궁금합니다. jQuery의 소스 코드는 너무 난해하고 이해하기 어렵습니다. 구현 원리를 분석하기 위해 코드의 단순화된 버전을 게시할 수 있습니까?

高洛峰高洛峰2708일 전1186

모든 응답(2)나는 대답할 것이다

  • phpcn_u1582

    phpcn_u15822017-06-12 09:29:06

    off 처리를 이해하려면 먼저 on 작업을 이해해야 한다고 생각합니다. 작년에 jquery2.x의 소스 코드를 읽었는데 이벤트 측면이 상당히 복잡합니다.

    제가 작성한 대략적인 메모를 살펴보니 사건을 설명하는 영상에는 제가 봐야 할 내용이 전혀 언급되어 있지 않은 것을 발견했습니다.

    이벤트 바인딩에 대해 소스 코드 구현과 jquery.event.add 메서드를 결합할 수 있습니다.

    제가 이해한 바에 따르면 jquery는 주로 요소에 대한 캐시 데이터 캐시를 설정합니다. 캐시는 특정 DOM에 여러 번 추가하기 위해 "event": "callback function array" 형식으로 저장되는 이벤트 변수(이벤트 콜백 큐 컬렉션)를 저장합니다. 이벤트가 발생하면 콜백이 트리거될 수 있지만 실제로 네이티브 이벤트에 바인딩되는 것은 콜백 함수 배열의 순회 실행입니다.

    off에 관해서는 먼저 off의 소스 코드 부분을 살펴보겠습니다.

    으아악

    마지막 문장을 보면 실제로 jQuery.event.remove 메소드를 호출한다는 것을 알 수 있습니다.

    제거 방법

    으아악

    요소가 이전에 켜져 있을 때 캐시에 저장된 이벤트 변수에서 이벤트 키-값 쌍을 삭제하는 등의 작업을 주로 수행합니다.

    그냥 $(xx).off('click')이라면 이벤트에서 클릭 이벤트에 해당하는 콜백 함수 그룹을 직접 순회하여 삭제하는 것입니다. off 매개변수도 특정 콜백 함수를 전달하면 콜백 배열을 순회하여 비교하며, 해당 콜백 함수가 삭제되었습니다…

    jquery 소스코드는 초기 기초 부분은 Miaowei Classroom 영상을 시청하시는 것을 권장합니다. 기타 내용은 Daniel의 블로그 포스팅(http://www.cnblogs.com/aaronj...)을 시청하시거나 구매하실 수 있습니다. jquery 소스 코드 분석에 관한 유사한 책.

    소스코드 내용이 너무 많아서 한동안 정리가 힘들 것 같아서 == 총론적으로 말씀드리겠습니다... 혹시 오해가 있으면 정정해주세요~

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-06-12 09:29:06

    다음은 on의 코드입니다

    으아악

    회신하다
    0
  • 취소회신하다