我正在使用客戶端VBScript將舊的經典ASP應用程序升級到使用jQuery的更現代的框架。在這種情況下,我的jQuery替換在IE8中運行速度明顯慢於以前的VBScript。這裏是我更換的腳本:通過選擇元素選項加速jQuery搜索
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解決方案對文本響應延遲非常明顯;看起來好像鍵盤輸入在搜索過程中被凍結。
ComboBox
元素是一個帶有約3,500 option
元素的HTML select
。此方法正在搜索框的keyup
事件中觸發。
我可以做些什麼優化讓jQuery像舊VBScript一樣快?
建議之一是宣佈'變量$此= $(本);'和使用'$ this'variable而不是使用'$(本)'多次,這將使jQuery的搜索每次對象。但我不確定在這種情況下它對你有多大幫助! – BlackCursor