クライアント側の VBScript を使用する古いクラシック ASP アプリケーションを、jQuery を使用する最新のフレームワークにアップグレードしています。この例では、IE8 での jQuery の置き換えは、以前の VBScript よりも著しく遅くなります。これが私が置き換えているスクリプトです:
Function Find()
name = Ucase(MyForm.SearchBox.value)
For x = 0 to MyForm.ComboBox.Length - 1
If Ucase(Left(MyForm.ComboBox.options(x).text,len(name)))=name Then
MyForm.ComboBox.options(x).Selected = True
Exit Function
End If
Next
End Function
これが私の交換です:
var text = $('#SearchBox').val();
$('#ComboBox option').each(function () {
if ($(this).text().toUpperCase().indexOf(text.toUpperCase()) == 0) {
$(this).prop('selected', true);
return false;
}
});
VBScript の実行に遅延やフリーズはまったくありません。ユーザーは好きなだけ速く入力でき、検索は追いつきます。同じマシン上で同じデータを使用すると、jQuery ソリューションではテキストへの応答が非常に遅くなります。検索が行われている間、キーボード入力がフリーズしているように見えます。
要素は、約 3,500の要素をComboBox
持つ HTMLです。このメソッドは、検索ボックスのイベントで起動しています。select
option
keyup
この jQuery を古い VBScript と同じくらい速く実行するには、どのような最適化を行うことができますか?