>  기사  >  웹 프론트엔드  >  jquery 노트 event_jquery

jquery 노트 event_jquery

WBOY
WBOY원래의
2016-05-16 17:59:561026검색

브라우저 모델:
1. DOM 레벨 0 모델
이벤트 핸들러는 DOM 요소의 속성에 함수 인스턴스에 대한 참조를 할당하여 선언됩니다. 이는 onclick 등과 같이 가장 일반적이기도 합니다.

코드 복사 코드는 다음과 같습니다.

< img onclick="alert('hello');" src="1.jpg" />
$("img").onmouseover = function(){alert("hello") ;}

(1), 더 흥미로운 것은 이벤트 인스턴스와 이벤트 버블링입니다.
이벤트 인스턴스는 이벤트의 클래스 인스턴스를 함수의 첫 번째 매개변수로 전달하는 대부분의 브라우저이지만, IE에서는 이벤트가 window 속성에 할당됩니다. 대상 요소를 얻을 때 w3c 표준 브라우저에는 대상이 있으며 IE는 srcElement 속성을 사용합니다.
코드 복사 코드는 다음과 같습니다.

$("img").onclick=function(event){
if (!event) 이벤트 = window.event;
var target = event.target?event.target:event.srcElement
}

(2), 이벤트 버블링
대상 요소는 이벤트를 얻을 수 있는 기회를 가지며, 이벤트 모델은 동일한 유형에 대해 핸들러가 설정되었는지 확인하기 위해 대상 요소의 상위 요소를 요구합니다. 그렇다면 핸들러도 DOM 트리의 상단까지 호출됩니다.
w3c 표준 브라우저의 경우 이벤트의 stopPropagation()을 사용할 수 있습니다. 즉, 이벤트의 cancelBubble을 사용하여 버블링을 취소할 수 있습니다.

레벨 2 모델
이 결함을 해결합니다. 레벨 0 모델에서는 각 속성 저장 이벤트에 대해 하나의 핸들러만 등록할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

$("img").addEventListener( 'click' ,function1,false).addEventListener('click',function2,false);

2레벨 모델에서는 이벤트가 트리거되고 먼저 DOM 트리에서 아래로 전파됩니다. 위의 addEventListener의 세 번째 매개변수가 false이면 버블링 핸들러가 생성되고, true이면 캡처 핸들러가 생성됩니다.
여기서 캡처 유형에 대해 처음 들어봤습니다. IE6과 7은 2단계 모델을 지원하지 않기 때문입니다. 그래서 당연하지만 일부 IE 브라우저는 attachmentEvent(eventName, handler)와 유사한 버블 유형을 지원합니다. ).

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