jQuery에는 이벤트등록을 할수 있는 흥미로운 방법이 존재한다.

바로 delegate()인데 1.7버전 이상부터는 on()메소드를 권장하니 on()으로 살펴보자.

소개되는 예제코드는 예제페이지로 이동한후 개발자도구 콘솔을 열어서 실행하면 된다.

delegate형태로 이벤트 등록

$(document.body).on('click', 'div', function(event){
    console.log(event.target,   event.currentTarget);
});

on()메소드의 두번째 인자가 div이다.

해석해 보자면 document.body에 click이벤트를 주고 document.body > div 만 감시하겠다. 라는 의미 이런 delegate방식은 동적요소가 추가될경우 빛을 발한다!

동적요소 추가시 이벤트 등록

$('#box').on('click', 'p', function(){
    $('#box').append("<p>나도 p태그, 클릭해보아요</p>");
});

위의 코드로 새로 생기는 p태그에도 동일한 이벤트를 할당하게 된다.

예제 http://jsfiddle.net/niceaji/ea7v7/

delegate는 dom요소가 렌더링이 되기전에 이벤트 등록이 가능하고 이벤트 등록갯수를 줄이게 되어 결국 퍼포먼스 향상으로 이어질수 있다



blog comments powered by Disqus

Published

12 June 2012

Tags