我这里有某种 webapp,它当然包含 JavaScript 和 jQuery。在加载时,一个函数span
会围绕文本的每个字母 - 大约 150 个字母。然后用户可以选择字母并在确认后显示结果。一切都很顺利,只有最后一部分真正扼杀了性能。
结果保存在三个数组中。单击后,将触发向单击的元素添加类的功能(这是确认)。
我这样做(每个数组3次):
$.each(myArr, function( i, v ){
$(v).addClass( "my-class" );
});
它以这种方式工作,但是因为我大量操作 DOM,它会降低性能。
我使用的是 2.26 GHz 和 2 GB RAM 的 MacBook,在添加类后我无法运行简单的工具提示或任何内容。特别是如果一个阵列真的满了,这会对性能产生负面影响。
我已经尝试过优化脚本。我缓存了每个多次使用的 DOM 对象,但并非在每种情况下都是可能的(我认为......)。我还使用了选择器,例如.my-class
and#my-id
而不是span[class = my-class]
andspan[id = my-id]
来加速一切。只有最后一个数组部分是坏的。
有没有办法优化这$.each
部分?缓存还是什么?或者也许使用另一种技术?
我不希望脚本超级快 - 但在显示结果后添加一个简单的工具提示应该是可能的。