2010-08-13 5 views
1

테마에 두 가지 유사 콘텐츠가 있는지 묻는 중입니다. 정직하게 답변을 모릅니다.jQuery 성능 튜닝 : 컨텍스트가 항상 중요합니까?

주어진 다음의 두 가지 기능 :

$("table").each(function(){ 
    $("td", this).live("hover", function(){ 
     $(this).toggleClass("hover"); 
    }); 
}); 

$("table td").each(function(){ 
    $(this).live("hover", function(){ 
     $(this).toggleClass("hover"); 
    }); 
}); 

합니까 다른 통해 하나 개 제공하는 더 나은 성능? 왜?

답변

5

측정. Firebug와 IE8 웹 개발자 도구 모음에는 프로파일 링 기능이 있습니다.

언뜻보기에 첫 번째 질문에서 두 번째 질문과 마찬가지로 두 번째 질문을하고 싶습니다.하지만 내가 말한 것처럼 측정 만하면 정확한 결과를 얻을 수 있습니다.

0

XIII처럼 측정이 아마도 좋은 대답을 얻는 유일한 방법 일 것이라고 말했습니다.

  • 모든 브라우저가 getElementByTagName과에서 getElementById를 구현 : 여기에

    하지만 코멘트 부부. 즉, 요소를 태그 또는 ID로 선택하면 클래스 (예 :)에서 선택하는 것보다 일관되게 빠를 가능성이 높습니다. 분명히이 경우에는 태그로만 선택합니다.

  • 첫 번째 예에서는 이벤트 핸들러를 첨부하여 각 td를 반복하는 각 테이블에 대한 함수를 구성합니다. 두 번째 경우에는 문서의 각 td에 대한 함수를 생성하고 있습니다 (아마도 더 많은 함수). 성능 향상의 의미는 자바 스크립트 엔진에 달려 있지만, 첫 번째 옵션은 리소스가 적다는 것을 짐작할 수 있습니다. 다른 사람으로

2

는 테스트, 문제를 프로파일 링, 언급하지만, 아마도 약간 빠른 변화는 다음과 같습니다

$("td").live("hover", function(){ 
    $(this).toggleClass("hover"); 
}); 

;-)