1. 바인드 방식, 마지막 매개변수 fn은 중복
// 객체 리터럴 처리
if ( typeof type === "object" ) {
for ( var key in type ) {
this[ name ](key, data, type[key ], fn) ;
}
반환
}
2, 댓글
// 클릭에 추가: 1 === 왼쪽; 2 === 중간; 3 === 오른쪽
을 수정해야 합니다.
의 코드를 복사합니다. 코드는 다음과 같습니다. // mousedown/mouseup에 대해 추가: 1 = == left; 2 === middle; 3 === right
3, 데이터 메서드는 내부 변수 InternalKey를 정의하지만 후속 코드 여전히 jQuery.expando를 사용합니다.
var InternalKey = jQuery.expando, getByName = typeof name = == "string", thisCache,
4, jQuery.event.add 메서드에서는 인수가 e로 변경되고, Apply가 호출로 변경되어 더 좋습니다. 하나의 매개변수(이벤트 객체)만 전달되기 때문입니다.
elemData.handle = eventHandle = function( e ) {
// jQuery.event.trigger()의 두 번째 이벤트를 삭제하고
// 페이지가 언로드된 후 이벤트가 호출되는 경우
jQuery의 반환 유형 !== "정의되지 않음" && ( !e |jQuery.event.triggered !== e.type) ?
jQuery.event.handle.apply( eventHandle.elem, 인수 ) :
}; >
5 "브라우저를 반복적으로 감지하지 않는다"는 원칙에 따라 jQuery.event.다음 코드를 추가합니다
elem.addEventListener( type, eventHandle, false )
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" type, eventHandle );
}
는 다음으로 바꿔야 합니다.
function( elem, type, handler ) {
if ( elem.addEventListener ) {
elem.addEventListener( 유형, 핸들, false )
}
} :
function( elem, 유형, 핸들 ) {
if ( elem.attactEvent ) {
elem.attactEvent( "on" type, handler );
}
};
사실 jQuery에는 이미 jQuery.removeEvent가 있지만 어떤 이유로 jQuery.addEvent가 없습니다.