이벤트 모듈의 진화에서는 이벤트를 적극적으로 트리거하기 위해 dispatchEvent(표준) 및 fireEvent(IE)를 사용했습니다. 다음과 같습니다
...
디스패치 = w3c ?
function(el, type){
try{
var evt = document.createEvent('Event')
evt.initEvent(type,true,true); >el.dispatchEvent( evt);
}catch(e){alert(e)};
} :
function(el, type){
try{
el.fireEvent( 'on' 유형) ;
}catch(e){alert(e)}
}
...
jQuery 트리거 이벤트의 핵심 메소드는 jQuery.event.trigger입니다. 클라이언트 프로그래머를 위한 두 가지 트리거 이벤트 메서드를 제공합니다. .trigger/.triggerHandler

Sina Mail를 클릭한 후 1 팝업(이벤트 핸들러)이 나타나면 확인을 클릭하여 mail.sina.com.cn으로 이동합니다(기본 동작). 따라서 이벤트를 트리거하도록 설계된 기능은 이 두 가지 상황을 고려해야 합니다.
jQuery는 .trigger와 .triggerHandler를 사용하여 다음 두 상황을 구분합니다.
.trigger는 이벤트 핸들러를 실행합니다/버블링을 실행합니다/기본 동작을 실행합니다
.triggerHandler는 이벤트 핸들러를 실행합니다/버블링하지 않음/하지 않음 기본 동작 실행
return this.each(function() {
jQuery.event.trigger( type, data, this );
});
},
TriggerHandler: function( type, data ) {
if ( this[0] ) {
return jQuery.event.trigger( type, data, this[0], true );
}
} ,
둘 다 jQuery.event.trigger를 호출하는 것을 볼 수 있습니다. 호출할 때 하나는 true를 전달하지 않았고 다른 하나는 전달했습니다. true TriggerHander를 전달하면 이벤트 핸들러만 실행된다는 의미입니다.
p1
p1
<script> <BR>$('p').click(함수() Alert(1)} ); <BR>$('p').trigger('click'); // 3번 재생합니다. 즉, 3번의 p 클릭이 발생합니다. ; , 첫 번째 p의 클릭만 트리거합니다. <BR></script>
자, 이제 jQuery.event.trigger 코드를 게시할 시간입니다
코드 복사
exclusive
......
}
jQuery.event.trigger의 정의이며 대부분 생략되어 있습니다. 아래 목록은
코드 복사
}
이 단락은 .trigger('click!'), 즉 네임스페이스가 아닌 이벤트를 트리거하는 상황을 처리하기 위한 것입니다. Exclusive 변수는 이벤트 객체에 매달린 후 jQuery.event.handle 내에서 사용됩니다. 예를 들어
코드 복사
console.log(2)
}
$(document).bind('click.a', fn1) ;
$(document).bind('click', fn2)
$(document).trigger('click!') // 2
두 개의 클릭 이벤트를 문서에 추가했습니다. 하나는 네임스페이스 "click.a"가 있고 다른 하나는 "click"이 없습니다. 트리거를 사용하는 경우 클릭 매개변수 뒤에 느낌표 "!"를 추가합니다. 2의 출력 결과를 보면 네임스페이스의 이벤트가 트리거되지 않는 것을 알 수 있습니다. 요약하자면:
.trigger('click')은 모든 클릭 이벤트를 트리거합니다.
.trigger('click.a')는 "click.a"의 클릭 이벤트만 트리거합니다.
.trigger('click!' ) 네임스페이스가 아닌 클릭 이벤트 실행
그런 다음
if ( type.indexOf(".") >= 0 ) {
// 네임스페이스 트리거; handler()의 이벤트 유형과 일치하는 정규 표현식을 생성합니다.
namespaces = type.split(" .");
type = 네임스페이스.shift();
namespaces.sort();
}
이 단락은 이해하기 쉽습니다. 즉, .trigger( 'click.a') 처리, 즉 네임스페이스가 있는 이벤트 처리입니다.
그럼
if ( (!elem || jQuery.event.customEvent[ 유형 ]) && !jQuery.event.global[ 유형 ] ) {
// 이 이벤트 유형에 대한 jQuery 핸들러가 없으며 인라인 핸들러를 가질 수 없습니다
return;
}
"getData"와 같은 일부 특수 이벤트 또는 트리거된 이벤트에 대해 직접 반환합니다.
아래로 이동
event = typeof event === "object" ?
// jQuery.Event 객체
event[ jQuery.expando ] ? event :
// 객체 리터럴
new jQuery.Event( 유형, 이벤트 ) :
// 이벤트 유형만(문자열)
new jQuery.Event( type )
세 가지 상황이 있습니다
이벤트 자체는 jQuery.Event 클래스의 인스턴스입니다
, 이벤트는 일반 js 객체입니다(jQuery.Event 클래스의 인스턴스가 아님)
, 이벤트는 "click"과 같은 문자열입니다.
계속
event.type = type; event.exclusive = 독점;
event .namespace = 네임스페이스.join(".");
event.namespace_re = new RegExp("(^|\.)" 네임스페이스.join("\.(?: .*\.)?") "( \.|$)");
exclusive/namespace/namespace_re는 이벤트에 연결되어 있으며 jQuery.event.handle(이벤트 네임스페이스)에서 사용할 수 있다는 점에 유의해야 합니다.
다음은
if ( onlyHandlers || !elem ) {
event.preventDefault()
event.stopPropagation()}
onlyHandlers는 .triggerHandler에서만 사용됩니다. 즉, 요소의 기본 동작을 트리거하지 않고 버블링을 중지합니다.
// TODO: 데이터 캐시 조롱을 중지하고 전역 이벤트를 제거하고 항상 문서에 연결합니다
jQuery.each( jQuery.cache, function() {
// InternalKey 변수는 단지
// 이 항목을 더 쉽게 찾기 위해 사용되며 현재는
// jQuery.expando를 가리킵니다.
var InternalKey = jQuery.expando,
internalCache = this[ InternalKey ];
if ( InternalCache && InternalCache.events && InternalCache.events[ type ] ) {
jQuery.event.trigger( event, data, InternalCache.handle.elem ); >}
});
return
}
이것은 재귀 호출입니다. elem 요소가 전달되지 않으면 jQuery.cache에서 가져옵니다.
다음 항목
}
속성 , 텍스트 노드 직접 반환.
다음은 복사코드입니다
먼저 배열에 매개변수 데이터를 넣고 배열의 첫 번째 위치에 이벤트 객체를 넣습니다.
다음 항목
// 화재 이벤트 현재 요소에서 DOM 트리를 버블링합니다.
do {
var handler = jQuery._data( cur, "handle" )
event.currentTarget = cur
if(handle);
handler.apply( cur, data );
}
// 인라인 바운드 스크립트 트리거
if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ]. apply( cur , data ) === false ) {
event.result = false
event.preventDefault();
}
// 문서로 버블링한 다음 창으로
cur = cur .parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; while ( cur && !event.isPropagationStopped() ); 코드는 매우 중요합니다.
, 핸들
가져오기,
실행, 상위 요소 가져오기
를 수행하세요. > while 루프 이 네 단계를 반복하여 이벤트 버블링을 시뮬레이션합니다. 창 개체까지.
다음은
코드 복사
!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
// 이벤트와 이름이 같은 대상에서 기본 DOM 메서드를 호출합니다.
// IE6이므로 여기에서 .isFunction)()을 확인할 수 없습니다. /7은 해당 테스트에 실패합니다.
// IEtry {
if( ontype && elem[ type ] ) {
// FOO() 메서드를 호출할 때 onFOO 이벤트를 다시 트리거하지 마세요.
old = elem[ ontype ]
if ( old ) {
elem[ ontype ] = null;
}
jQuery.event.triggered = type;
elem[ type ]()
}
} catch( ieError ) {}
if( old ); 🎜>elem [ ontype ] = old;
}
jQuery.event.triggered = undefine;
}
}
이 섹션은 브라우저의 기본값에 대한 트리거입니다. 행동. form.submit(), 버튼.클릭() 등이 있습니다.
Firefox 링크의 보안 제한으로 인해 링크에 대한 jQuery의 기본 동작은 트리거되지 않도록 통합되었습니다. 즉, .trigger()를 통해 링크를 점프할 수 없습니다.

JavaScript 코어 데이터 유형은 브라우저 및 Node.js에서 일관되지만 추가 유형과 다르게 처리됩니다. 1) 글로벌 객체는 브라우저의 창이고 node.js의 글로벌입니다. 2) 이진 데이터를 처리하는 데 사용되는 Node.js의 고유 버퍼 객체. 3) 성능 및 시간 처리에는 차이가 있으며 환경에 따라 코드를 조정해야합니다.

javaScriptUSTWOTYPESOFSOFCOMMENTS : 단일 라인 (//) 및 multi-line (//)

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.

Python 또는 JavaScript는 경력 개발, 학습 곡선 및 생태계를 기반으로해야합니다. 1) 경력 개발 : Python은 데이터 과학 및 백엔드 개발에 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 적합합니다. 2) 학습 곡선 : Python 구문은 간결하며 초보자에게 적합합니다. JavaScript Syntax는 유연합니다. 3) 생태계 : Python에는 풍부한 과학 컴퓨팅 라이브러리가 있으며 JavaScript는 강력한 프론트 엔드 프레임 워크를 가지고 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구