2011-09-27 8 views
3

jQuery에서 click() focus() 및 기타 상호 작용 이벤트에 .live()를 사용하는 것이 좋습니다.jQuery : 클릭 및 기타 기능에 항상 live()를 사용하지 않는 이유가 있습니까?

많은 프로토 타입 작성을하므로 요소를 동적으로 추가하려면 유연성이 뛰어납니다. 그 이유 때문에, 나는 항상 디폴트로 그것을 사용하는 아이디어에 끌린다. 이것은 좋은 생각입니까, 아니면 나쁜 성능입니까?

.live('click',function(){})을 사용하면 .click(function(){})과 같이 느리게 작동하지 않습니까?

+0

DOM에 요소를 동적으로 추가하지 않거나 클릭 처리기를 동적으로 추가 된 요소에 연결하려면 '라이브'를 사용하지 말고 성능 측면에서 비용이 많이 들기 때문에 필요하지 않습니다. – Rafay

+0

가끔 이벤트 버블 링을 사용하는 경우가 있습니다. – julkiewicz

+1

Delegate()는 본문으로 끝까지 버블 링하는 대신 버블 링이 중단 될 상위 컨테이너를 지정할 수 있다는 점을 제외하고는 live()와 매우 비슷합니다. 그것은 더 성능이 좋으며 구문은 매우 유사합니다. http://api.jquery.com/delegate – Malevolence

답변

1

이벤트가 DOM 상단까지 버블 링되지 않아도 이벤트가 발생할 컨텍스트를 알고있는 경우 delegate()이 성능면에서 훨씬 더 좋습니다. 이 점에 관해서는 delegate()live()보다 나은 이유에 대해 this stackoverflow 게시물을 참조하십시오.

+0

누구나 유용한 답변을 여기에 주었지만이 중 가장 좋은 답변입니다. 나는 앞으로 더 많은 위임자를 사용할 것이다. – daveyfaherty

1

을 만들 않는 다음과 같은 대답이 성능에 미치는 영향에 적합 할 것이라 생각합니다. 그러나 라이브에는 몇 가지 함정이 있으며 여기에는 설명서 http://api.jquery.com/live/#caveats에 설명되어 있습니다.

1

.live는 이벤트 버블 링을 사용합니다.

내 경험에 비추어 볼 때, 큰 문서에서 .live를 사용하면 마우스 오버와 같이 자주 트리거되는 이벤트로 눈에 띄는 성능이 저하되는 것을 경험했습니다.

의 jQuery DOC :

하지만 jQuery를 1.4로서

는 이벤트 버블 임의로 DOM 요소 "컨텍스트"에서 정지 할 수있다.

따라서 성능을 최소화하려면이 값을 사용할 수 있습니다.

관련 문제