jQuery는 사용자 정의 이벤트를 어떻게 만드고 JavaScript에서 다시 만들 수 있습니까?

StackOverflow https://stackoverflow.com//questions/25082764

문제

JQuery와 동일한 방법론을 사용하여 JavaScript에서 이벤트를 만들고 싶습니다. 누구든지 jQuery가 어떻게 그것을하는지 알고 있습니까?

나의 추론은 원시 자바 스크립트를 사용하는 것입니다 :

var myEvent = new CustomEvent("userLogin", eventProperties);
.

... Android 기본 브라우저에서 실제로 작동하지 않습니다. Chrome 및 기타 브라우저는 DOM 레벨 3을 지원하지 않으므로

그러나 jQuery 은 Android의 주식 브라우저에서 작동하며 단순히 다음을 사용합니다.

$.event.trigger('MyEvent');
.

내 질문은 이것을 뒤에있는 코드는 무엇입니까?나는 jQuery의 소스 코드를 통과하여 찾으려고 노력했습니다. 그러나 소스 코드 내 머리를 얻을 수 없어!

도움이 되었습니까?

해결책

여기에 기본적인 것은 다음과 같습니다. jQuery로 이벤트 처리기를 올리면 jquery 은 해당 핸들러를 DOM 요소에 추가하지 않습니다. 대신 jQuery는 DOM 요소에서 자체 핸들러를 연결합니다 (아직 하나가있는 경우). 이벤트가 발생하면 jQuery는 이벤트를 위해 jQuery-readding 핸들러 목록을보고 순서대로 발생합니다. (이는 몇 가지 이유가 있습니다. 처음에는 IE 메모리 누수와 같은 핸들러가 한 순서로 핸들러를 해고하는 사실이며, jQuery는 그 명령을 받아 보장했습니다.)

(이 위치에서 어디로가는 곳을 볼 수 있습니다 ...)

trigger를 사용할 때 jQuery는 합성 이벤트를 DOM 요소로 보냅니다. 그러나 의존도가 작동하지 않습니다. jQuery를 통해 등록한 핸들러를 직접 통화합니다. 실제로, 그것은 플래그를 설정하므로 그것이 완료되었음을 알 수 있도록, 그래서 브라우저 은 jQuery의 처리기에 이벤트를 보내는 경우 jQuery는 그것을 무시하는 것을 알고 있습니다 (이미 작업 완료 이후) .

현재 압축되지 않은 jQuery 파일의 4,464 행부터 시작할 수 있습니다. .

그래서 기본적으로 jQuery의 자체 pub / sub 시스템을 빌드하며 브라우저 이벤트 시스템 만 입력으로 만 사용합니다. 따라서 사용자 정의 이벤트는 일반적으로 브라우저와 이야기해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top