我想在我的沉重的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