我想在我的沉重的JavaScript UI应用程序中做出一些严重的延迟削减。 我已经读了如何优化代码,并从我学到了一些东西,我的理解是:
- $(元素)。每个()使事情变得更慢
- 变量(和HTML对象)应该被缓存
这是一个函数内我现有的代码的一部分运行经常在我的应用程序:
if($('.textbox').length > 0)
{ $(".textbox").each(function(){
var parts = $(this).attr('id').split('_');
// do some linear-time operations here with $this
});
});
到目前为止,我知道我应该把$this = $(this)
在.each()
的开头,并且只使用$(this)
。但我还能做什么?有没有更快的替代方法来使用.each()?我确实需要检查出每个div
与.textbox
类。
谢谢!我对你直接使用'this'的方式有些困惑。比使用'$ this'更有效吗?我们可以直接使用'this',即使是像'$ this.css('left')'这样的东西吗? – user961627 2013-02-16 12:54:17
@ user961627:在'each'(和内jQuery的事件处理程序),'this'指原始DOM元素,这意味着可以使用任何属性或DOM元素具有的方法(参见[各种DOM规格](HTTP:/ /www.w3.org/DOM/DOMTR))。当你执行'$(this)'时,你调用了jQuery并传入了DOM元素,并且找回了一个jQuery包装器。这个包装器提供了像'css'这样的jQuery函数。 – 2013-02-16 13:04:34
谢谢 - 我一直对这个包装部分感到困惑 - 你把这些话写得很清楚。 – user961627 2013-02-16 13:09:02