我正在将使用客户端 VBScript 的旧经典 ASP 应用程序升级到使用 jQuery 的更现代的框架。在这种情况下,我的 jQuery 替代品在 IE8 中的运行速度明显比之前的 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 一样快?