나는 몇 가지 테스트를 실행하여 Asp.Net에서 상위 컨트롤의 ID가 접두사로 붙은 컨트롤에 대한 효율적인 선택기를 찾을 수 있는지 확인했습니다.누구나이 jQuery 선택기를 이길 수 있습니까?
내가 선택할 수 있기 때문에 이것을 찾고있었습니다. ASP는 외부 자바 스크립트 파일에서 제어합니다 (ClientID 사용에 지쳤습니다).
테스트하려면 "빠른"cssclass 및 개별 ID로 150 개의 텍스트 상자가있는 페이지를 설정하고 다음 코드를 실행하여 107 번째 텍스트 상자를 선택하십시오.
function testclientInput() {
var iterations = 100;
var totalTime = 0;
// Record the starting time, in UTC milliseconds.
var start = new Date().getTime();
// Repeat the test the specified number of iterations.
for (i = 0; i < iterations; i++) {
// Execute the selector. The result does not need
// to be used or assigned to determine how long
// the selector itself takes to run.
// All tests done in ie6, ie7, ie8, ie9beta, firefox3.6, opera11 & chrome8
// slowest
// $('input.speedy[id$=_TextBox107]');
// Quick but only useful if you know the index.
//$($('input.speedy')[106]);
//$('[id$=_TextBox107]:first');
//$('input[id$=_TextBox107]');
//$.clientID("TextBox107");
//$('[id$=_TextBox107]');
//$('input[id$=_TextBox107]:first');
//$($('[id$=_TextBox107]')[0]);
// Fastest
//$($('input[id$=_TextBox107]')[0]);
}
// Record the ending time, in UTC milliseconds.
var end = new Date().getTime();
// Determine how many milliseconds elapsed
totalTime = (end - start);
// Report the average time taken by one iteration.
alert(totalTime/iterations);
};
이것은 내가 생각해 낸 최고입니다. $($('input[id$=_TextBox107]')[0]);
. 결과는 놀랍습니다 .... :first
선택기를 사용하여 내 버전과 일치한다고 예상했지만 훨씬 느린 결과가보고되었습니다.
누구나 이것을 최적화하는 방법을 생각할 수 있습니까?
죄송 합니다만, 왜'document.getElementById ('_ TextBox107')'을 사용할 수 없습니까? ID는 고유해야합니다. – Harmen
@Harmen : * 속성을 사용하는 사람은 * selector로 끝납니다. 따라서 '_TextBox107'은 ID의 마지막 부분입니다. – user113716
@Harmen : ASP 컨트롤에는 상위 ID가 접두어로 붙어 있기 때문에. 나는 내 질문에 이것을 진술한다. –