Я провел несколько тестов, чтобы выяснить, могу ли я найти эффективный селектор для элементов управления с префиксом id родительских элементов управления в Asp.Net
Я искал это так, как должен был бытьвозможность выбирать элементы управления Asp из внешних файлов JavaScript (я сыт по горло использованием ClientID).
Для проверки я создал страницу со 150 текстовыми полями, все с cssclass "speedy" и индивидуальным идентификатором, и выполнил следующий код, чтобы выбрать 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
будет соответствовать моей версии, но он сообщил о гораздо более медленных результатах.
Может кто-нибудь придумать способ оптимизировать это?