私は、Asp.Netの親コントロールのIDでプレフィックスされたコントロールの効率的なセレクタを見つけることができるかどうかを調べるためにいくつかのテストを行ってきました。誰もこのjQueryセレクタを打つことができますか?
私はこれを探していましたAspは外部のjavascriptファイルから制御します(私はClientIDを使用するのがうんざりです)。
テストするには、cssclass "speedy"と個々の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:彼は*セレクターで終わる*属性を使用しているので、 '_TextBox107'はIDの最後の部分です。 – user113716
@Harmen:ASPコントロールには親IDが前置されているためです。私は私の質問でこれを述べます。 –