2010-06-04 26 views
21

我最近在收聽一個使用$()而使用jQuery()發表評論的播客。據稱,每次使用$()時都會創建一個新對象,並且在使用jQuery()時,情況並非如此。我谷歌周圍,但無法找到任何關於這個特定主題。

我意識到這不是一個典型的例子,但以下是我對這個問題的答案感興趣的原因。

我有一個頁面,用戶將在瀏覽器中一直保持加載一整天(24小時或更長時間),並且每5秒鐘更新一次DOM,作爲AJAX通過jQuery調用的結果( AJAX調用部分與更新DOM無關 - 對DOM的更新使用一串HTML並在jQuery對象上調用.empty(),然後調用.html())。

因爲聽到這,我隨後改用所有$()調用jQuery()電話,但我想知道:
是使用$() VS使用jQuery()一種不好的做法?兩者之間的差異可以忽略不計嗎?或者它在大型項目上真的很明顯?

+0

我看到的唯一不好的事情就是$()很難搜索,所以如果你需要改變範圍那麼它會很難 – Earlz 2010-06-04 21:06:48

+0

像這樣使用$()會每次創建一個對象 - $( 「#項目」)HTML( '這裏')。 $( 「#項目」)效果基本show();'。相反,如果你使用相同的元素,你應該鏈接調用或類似的東西 - 'var ele = $(「#item」); ele.html( '這裏'); ele.slideUp();' – 2010-06-04 22:58:45

+1

這是什麼播客,所以我知道要避免它。 – Mark 2010-08-03 20:07:19

回答

21

不,這不是壞習慣,沒有性能差異。

$jQuery標識符指的是相同的功能實例。
這是通過的jquery.js的最後一行完成:

window.jQuery = window.$ = jQuery; 
+0

@Nate只有當'jQuery'每次都在內存中創建一個新對象 – Earlz 2010-06-04 21:07:41

+1

我稱之爲神話,破壞! http://dsc.discovery.com/tv/mythbusters/ – tvanfosson 2010-06-04 21:14:17

4

都能跟得上 - 看看jQuery的源代碼。 $僅僅是jQuery的另一個別名 - 最後一行說,這一切:

window.jQuery = window.$ = jQuery; 

在這裏看到自己: http://code.jquery.com/jquery-latest.js

+0

如果使用'$'的其他庫在jQuery之後? – Garrett 2010-06-05 02:50:53

+0

然後使用jQuery.noConflict - http://api.jquery.com/jQuery.noConflict/ – 2010-06-05 17:15:15

12

使用$()超過jQuery()唯一的問題是可能另一個JavaScript框架使用它以及。

+3

...有辦法解決這個問題 - 查看關於noConflict的文檔:http://api.jquery.com/ jQuery.noConflict/ – tvanfosson 2010-06-04 21:13:23

+1

此外,許多其他框架提供(或至少考慮)避免這種衝突的方式。 – Kurucu 2010-06-04 22:31:09

2

對我而言,目標是避免命名與其他使用$作爲主對象的庫的命名衝突,如Prototype,如果您想在同一頁上使用這兩個庫,或者您不知道代碼的位置被使用...

2

你確定它是$()vs jQuery()嗎?也許更重要的一點是性能命中要麼做,並且許多新的js編碼器在普通j可以做時不必要地使用$()。

避免在不需要的時候創建一個jQuery對象是個好習慣。