我正在使用客户端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