2012-03-07 55 views
6

我們都知道將調用緩存到DOM是很好的,所以不要再調用$('#someElement')多次,只需將它保存到var $ someElement並使用它即可。

但是,在事件監聽器中使用$(this)時是否也是如此? $(this)應該被緩存嗎?

謝謝。

+2

我懷疑它完全取決於'$(this)'的使用模式。 – 2012-03-07 14:31:19

回答

5

每次調用$(this)$(selector)時間,它是一個函數調用來創建一個新的jQuery對象...因此,如果您已經創建它曾經,緩存將保存調用一個函數來再次創建相同的對象

+0

謝謝你,查理。 – Francisc 2012-03-07 14:44:43

2

如果稍後在事件函數中引用相同的元素,那麼是的。在功能之外,這樣做沒有任何意義,因爲this的值將會改變。

+0

謝謝你,Diodeus。 – Francisc 2012-03-07 14:45:00

7

如果你打電話$(this)多次,最好是做一些像var $this = $(this);

+0

是否有性能提升或僅用於保存字符(每次使用2次)? – Tx3 2012-03-07 14:34:20

+0

@ Tx3不,它不僅僅用於保存字符,它是保存函數調用。你每次做'$(this)'都做過函數調用。 – xdazz 2012-03-07 14:36:31

+0

當然,我只是想當它做「包裝」時它正在做什麼樣的操作。無論如何,我一直在按照你的建議使用它,所以這只是好奇心。 – Tx3 2012-03-07 14:42:01