2011-07-16 80 views
2

我認爲我讀的東西,說是這樣的代碼更好:

var id1 = $(this).attr('id') 
var id2 = $(this).parent().parent().parent().parent().parent().attr('id') 
var text = $(this).text()   

..to給一個變量像$this = $(this),然後用它來代替每個$(本)的。我不知道我在哪裏閱讀,所以我的問題是,這是真的嗎?

+1

是的,它是...... – genesis

+0

的'$的構造查詢(此)'對象以微秒爲單位進行度量,這意味着當使用變量來緩存該對象時,**沒有實際的性能改進。我個人比'$ this'更喜歡'$(this)'。 –

+0

嗯..但理論上有一點區別? – krzyhub

回答

1

是你可以

var $this = $(this); 
var id1 = $this.attr('id'); 
var id2 = $this.parent().parent().parent().parent().parent().attr('id') ; 
var text = $this.text(); 
+1

是的,我知道我可以,但我問,這樣做更好。 – krzyhub

+0

我認爲是的......即使是表現 – genesis

+0

所以這就是我尋找的。對不起,編輯Yuor的答案。我編輯它,因爲我忘記從我的示例代碼中刪除評論。 – krzyhub

2

這樣可以節省一些時間,以便在每次使用jQuery數組類收集時將this對象包括在內。所以簡短的回答:是的,但差異不應該很大。

1

如果您的問題被分配到選擇本地變量,然後你說得對。這與Javascript的範圍本質有關。

如果我沒記錯,當你使用局部變量時,變量查找速度會更快。特別是如果您多次使用選擇器。

我不知道你在哪裏看過它,但我在Google Developer Stuff上看了一段關於這個視頻的視頻。

我不記得原始視頻,但檢查這video。這是一個很好的手錶。

還要檢查this幻燈片

+0

所以如果assingning選擇器給出更好的性能,就是這樣。 – krzyhub

+0

@Sinan你不是將選擇器分配給一個變量,而是一個jQuery對象。 –

+0

@Sime Vidas - 你是對的。我想我讀得不好。 :/ – Sinan

2

如果我收到了你的問題的權利,是的。這裏有一個例子:

var t = $(this); 
var id1 = t.attr('id'); 
var id2 = t.parent().parent().parent().parent().parent().attr('id') ; 
var text = t.text(); 
+0

對不起,編輯你的答案,我錯過了從代碼中刪除評論。所以你說分配$(this)給變量?好吧,我會這樣做我的工作。謝謝。 – krzyhub

1

讓我多幾個點添加到該

以下被稱爲高速緩存和用於改善DOM操作的性能, 下面的代碼將緩存的對象,也不會每次在$ this上進行任何操作時都會查詢DOM。

var $this = $(this); 
var id1 = $this.attr('id'); 

的$(這)可能會多一點的費用爲每次它必須做對DOM

var id1 = $(this).attr('id'); 
+0

就像我想的,但我需要確保。謝謝。 – krzyhub

+0

@Cris,是啊,主要是當你在做動畫或做追加或使用時。html等等, – kobe

+0

還有一點你可以聲明任何對象,不需要添加$也 – kobe