2011-01-18 3 views
2

최근에는 .delegate와 .live를 많이 사용하고 있습니다. 이벤트 캡처와 관련해서는 미묘한 차이가 있습니다. $ ('a'). live ("click", ..., html 콘텐츠로 이미지가있는 링크)와 같은 링크 클릭 라이브를 사용하면 클릭 핸들러가 이미지 대신 대상을 얻습니다. 링크. 대표단 반면에, 그것은 그것 것을 목표로 전달되는 링크를 보인다. 캐치는 여기에 무엇jquery.delegate가 이벤트 핸들러를 호출 할 때?

?

또한, 정확히 .delegate을 촉구 클릭 핸들러가되면, 동안 캡처 단계 또는 버블 링 단계

답변

2

.live.delegate의 주된 차이점은 .delegate()context. 즉, .delegate()은 실제로 .live()의 래퍼이지만 버블 링 이벤트에 대한 문서 루트를 보지 않고 주어진 루트 노드를 보게됩니다. 예를

$('a').live('click', function() { 
}); 

를 들어

document.body에 연결된 이벤트 핸들러를 생성합니다. 이것은 귀하의 사이트에서 발생하는 모든 anchors- 클릭을 절대적으로 포착합니다.

$('#someDiv').delegate('a', 'click', function() { 
}); 

#someDiv에서 childNodes에있는 모든 앵커를 "볼"것이다.

위임 된 이벤트가 .live() 인 경우에는 다른 목표가있을 것 같지 않습니다. .live().delegate() 모두 이벤트 객체에서 핸들러로 전달됩니다. 아무런 차이가 없어야합니다. event.target은 항상 호출 노드 여야합니다.

관련 문제