2011-04-19 5 views
1

일부 HTML 문자열을 전달하여 간단한 jQuery 객체를 만들고 있습니다. 하지만 IE7에서는 약 125ms가 걸린다는 경고가 나옵니다.이 jQuery 선택기는 매우 느립니다. 왜?

var timeStart = new Date(); 
var allTabs = jQuery(tmbJsContent); 

var timeEnd = new Date(); 
alert(timeEnd-timeStart); 

tmbJsContent에는 표가 들어있는 10 개의 div가 들어 있습니다. 조금 길지만 DOM 조작이 없으므로 하나의 jQuery 객체가 만들어지고 있기 때문에 약간은 이해할 수 있습니다. 왜 그렇게 오래 걸릴까요? 어떻게하면 더 빨리 만들 수 있습니까?

감사

+10

그리고 'tmbJsContent' 변수의 값을 게시 할 필요가 없다고 생각하십니까? –

+1

선택자가 표시되지 않습니다. – BoltClock

+0

@ 다린 - 당신의 외교적 방법 : :) – ChaosPandion

답변

3

+0

OP가 IE6을 사용하는 경우 -이 솔루션은 작동하지 않습니다. – clamchoda

+0

어째서? 이것은 표준 javascript이고 IE6의 모든 곳에서 작동해야합니다. 'document.createElement'는 표준 DOM 메소드이고 IE는 innerHTML을 발명했습니다. – Andris

+0

Becaise IE6는 innerHTML의 조작을 지원하지 않습니다. (제 친구, 제 대답은 완벽하지 않습니다. 브라우저가 불완전한 브라우저입니다.) – clamchoda

1

진정이 대답하기 :

var container = document.createElement("div"); 
container.innerHTML = tmbJsContent; 

우리가 tmbJsContent의 가치를 볼 필요가 밀리 초 정도 걸릴해야 그 innerHTML 내용 컨테이너 요소를 만들고 업데이트 ...

, 선택기가 느린 경우 컨텍스트로 컨테이너를 전달하여 선택자에 대한 "검색 영역"을 제한하십시오.

예 :

var context = jQuery('#SomeContainer'); 
var target = jQuery('MySelector', context); 

이 전달 된되는 컨테이너에 선택 검색을 제한합니다.