2012-03-03 2 views

답변

8

실용적인 이벤트 버블 링?

jQuery를 사용하거나 사용하지 않고 (라이브러리를 사용하지 않고 거품이있는 이벤트를 처리 할 수 ​​있음을 명심하십시오.) 코드를 구조화하여 버블 링을 활용하려는 여러 가지 시나리오가 있습니다.

한 예는 :의 당신이 요소를 동적으로 생성되는 페이지가 있다고 가정 해 보자,하지만 당신은 그 요소에 클릭을 처리 할. 이벤트 핸들러가 존재하기 전에 이벤트 핸들러에 직접 바인드 할 수는 없지만 이벤트 핸들러를 작성할 때 개별 핸들러를 바인드하면 약간의 어려움이 있습니다. 대신, 컨테이너 개체에 이벤트 처리기를 바인딩 : 컨테이너에 개별 요소의 이벤트는 버블 링 위로를 클릭하지만 당신은 여전히 ​​클릭 된 요소를 말할 수 - jQuery를이 쉽게 당신이 .on(), 또는 .delegate()의 적절한 구문을 사용하는 경우 (또는 jquery의 실제 버전이있는 경우 .live()) this을 클릭 된 요소로 설정했기 때문입니다.

<div id="someContainer"></div> 

$("#someContainer").on("click", ".dynamicElement", function() { 
    // this is the element, do something with it 
}); 

이것은 "someContainer"의 하위 클래스 "dynamicElement"인 요소의 클릭에 무언가를 DIV 말한다. "dynamicElement"요소가 페이지로드시 존재했는지, 다른 사용자 조치에 대한 응답으로 나중에 추가되었는지, Ajax로로드되었는지에 관계없이 작동합니다. 나는 동적으로 DIV에 이미지를 추가

+0

감사합니다 nnnnnn, 나는 정기적으로 언급 한 특정 예를 사용하고 있습니다. 다른 사람들도 나눌 수 있는지 궁금하네요? 감사! –

+1

.... 나는 이것이 하나의 청취자를 등록하는 것보다 많은 것을 등록하는 것보다 효율적이라고 생각합니다. –

1

, 나는 포함하는 사업부에서 온로드 이벤트를 캡처하는 이벤트 버블 링을 사용하여 계획.

+0

'onload'는 이미지가 실제로 스크린 상에 렌더링되었을 때를 알기 위해서입니다. 코드 스 니펫을 제공 할 수 있습니까? –

+1

맞습니다. 렌더링 된 시점이므로 display = 'inline'으로 설정하면 이미지를 볼 수 있습니다. 이렇게하면 이미지가 다운로드되기 전에 사용자가 보는 것을 정상화 할 수 있습니다 (브라우저 사용자가 작고 귀여운 이미지 대신). 죄송합니다 아직 발췌 문장이 없습니다. –

+0

- @ pure_code, 귀하의 예제가 이벤트 버블 링의 자격을 갖는 이유를 설명 할 수 있습니까? 나는 당신의 대답을 업 그레 이드하고 싶지만 미래 방문자들에게 충분히 유용하다는 것을 확실히하고 싶습니다. –

관련 문제