프로그램/jQuery

jquery 숨은기능들

mulderu 2010. 12. 13. 09:11

아래의    bind, live, delegate  관련 설명 부분은 잘 못 되었습니다.... 
잘못된 부분을 남겨서 나중에 신중히 포스트를 쓸 수 있도록 거울로 삼겠습니다.


제가 자세히 테스트 한결과

bind ( direct click event) :  event handler를 해석할 당시의 dom element  에만 적용됩니다.
live, delegate : 아래 코멘트 주신분의 말씀과 같이 현재시점( document ready후에 새로이 추가된 dom element가 있다면 그것도 포함) 에 selector  가 재 해석되어 처리 됩니다.

evnet propagation 처리의 미표한 차이 정리:

event 처리시 e.stopPropagation(); 으로 event의 전파를 차단 하는 경우 bind, delegate는 event bubbling을 막지만
live 의 경우 무시하고 계속 event가 상위로 올라 갑니다. 

---------------------------------------------------------------------------




jQuery 팀에서는 일반적인 이벤트 handler 가 식상했던 모양이다...  아래와 같이 live 를 이용하여 커스텀 이벤트를 만들고  trigger 를 이용하여 호출하는 용도도 있지만, 굳이 기본 이벤트 ( click 같은) 도 live, die 를 이용하여 처리 할 수 있도록 한건 약간 변태적인 발상이 아닐까...???? 암튼 jQuery에서는 event 처리 함수가 꽤 많이 있고, 서로 기능상 중복 되는 부분이 많은건 아마도 한명의 개발자가 개발하지 않고 여러명의 개발자가 공동 개발하는 오픈소스 개발의 특성이 영향을 준것 같다... (개인적인 소견)
live('eventname', handler):    보통은 그냥 $(selector).click(function () {} ); 이렇게 하면 되는데, 아래처럼 live 라는 키워드를 이용할 수 도 있다.

    $(selector).live('click', function() { alert ('click fire'); });

die('event_type'):  보통은 unbind 가 쓰일텐데, 아마도 die 를 만든 개발자가 당시, perl 에 심취되어 있었을것 같다. die 는 거의 perl 에만 있는 키워드 였기 때문이다...

    $(selector).die('click');


.closest( selector ) : 이친구는 jQuery에 능숙해진다면, 간절했던 기능이다...thank you

   가까운 상위노드(DOM-Tree)의 selector 를 찾아 리턴함.
   - 유용하게 사용가능 할것 같은데 ~~~