2011-02-23 2 views
2

HTML 페이지의 여러 단추에 이벤트 위임을 사용하고 싶습니다. 이 버튼들은 페이지 전체에 걸쳐 있으며, 클릭 이벤트에 대한 전체 문서를 듣는 데 얼마나 많은 비용이들 것인지 궁금해서 클릭 이벤트가 클릭 위젯을 통해 이벤트 위임 처리기를 트리거하게하는 것이 좋습니다. 이것은 20 개 이상의 버튼 각각에 청취자를 배치하는 것보다 비용이 많이 들지 않습니까 (100 개 이상의 버튼이 될 수 있습니다. 예, 바보입니다)?전체 문서에서 이벤트를 수신하는 비용은 얼마나 들까 요?

답변

1

25 개의 앵커 개체 대신 문서 개체에 대한 클릭을 듣고 있기 때문에 비용이 얼마나 들지 모르겠다. 그렇게 말하면 25-30 개의 버튼만으로는 리소스 집약적이지 않으므로 걱정할 필요가 없을 것입니다.

+0

20+는 그것이 100+ 이상으로 커짐을 의미합니다. 미안합니다. 마우스 오버 이벤트 인 경우 더 비쌀까요? 페이지에서 mouseover 된 각 요소에 대해 트리거되지 않습니까? – stevebot

+0

"A가 되었기 때문에 A가 더 비쌀 것이라고 생각하지 않습니다." o.O –

+1

@stevebot -이 경우 대신 위임해야합니다. 100 명의 앵커에 대한 청취자보다 훨씬 낫습니다. –

1

이것은 예를 들어 jQuery "live"메소드에서 사용되는 전략입니다. 전체 문서를 수신 한 다음 조건 (예 : 선택기)에 대해 송신자를 테스트합니다. 선택기가 견디기 힘들지 만 않으면이 기술은 커지면서 커지는 대상 세트에 더 효율적입니다.

0

열심히하셨습니까? 좋은 코드가 아닌 작업 코드.

위젯을 사용하는 대신 페이지에서 20 ~ 40 개의 버튼 리스너를 사용하면 효과가 나타나고 성능상의 문제는 없을 것입니다. 나는 forin/$를 사용하여 각각의 리스너를 바인딩 할 것이므로 각 리스너에 대한 코드를 작성할 필요가 없다고 생각합니다.

내 요청은 대의원을 사용하시기 바랍니다.

로직을 변경해야하거나 응용 프로그램을 테스트하기로 결정하면 문제가 발생할 수 있습니다.

2

나는 대신 (25) 앵커의 문서 객체에 클릭을 수신 할 것이기 때문에 더 비싼 것입니다 표시되지 않습니다는 핵심 아이디어는 여기 깊이입니다

객체. 이벤트가 실행되기 전에 이벤트가 DOM을 트래버스해야합니다. 당신의 요소가 DOM 트리 깊숙한 곳에 있다면 일 수 있습니다. 사물의

커플 명심하기 :

  • 은 그것의 이벤트 위임을 위해 중요하지 않습니다 앵커의 수, 즉
  • 일반적으로 이벤트 대표단은 대부분의 경우에 우수한 대안 사실이지만,

나의 제안은, 이러한 문제 유형을 분석 사물이 작동하는 방법을 배우고, 좋은 오래된 상식에 의해 의사 결정을 내릴 수있는 모든 시간을 유용하지 않습니다.

관련 문제