我自學並正在處理jQuery插件。
我發現了一個鍋爐板,用於迭代頁面上的元素,將$(this)分配給全局變量'obj'。
var obj = $(this);
正如我在功能的結果,我可以使用$(obj).someFunc()
或obj.someFunc()
都工作,但如果說實話,我真的不明白有什麼區別。
所以有這樣的問題,兩種方法的性能差異/好處是什麼,我應該使用哪種方法?
我自學並正在處理jQuery插件。
我發現了一個鍋爐板,用於迭代頁面上的元素,將$(this)分配給全局變量'obj'。
var obj = $(this);
正如我在功能的結果,我可以使用$(obj).someFunc()
或obj.someFunc()
都工作,但如果說實話,我真的不明白有什麼區別。
所以有這樣的問題,兩種方法的性能差異/好處是什麼,我應該使用哪種方法?
如果obj
已經是一個jQuery對象,當你做var obj = $(this);
是的話,那麼就沒有必要將它傳遞給jQuery的再次。
$(obj)
與$($(this))
相同,顯然是多餘的。
在看看jQuery
's documentation [docs]也有助於瞭解您可以傳遞給jQuery
什麼(化名$
):
jQuery(selector [, context ])
jQuery(element)
jQuery(elementArray)
jQuery(object)
jQuery(jQuery object)
jQuery()
你看到傳遞一個jQuery對象是完全有效的,但它會克隆傳遞的對象,這可能不是你打算做什麼。
但是,它可能是值得指出的是內一個jQuery插件方法,this
已經是一個jQuery對象,所以你不必將它傳遞給jQuery的要麼。
更多的信息在這裏:http://docs.jquery.com/Plugins/Authoring。
所以我可以忽略將$(this)賦值給obj並且僅僅引用'this' – KryptoniteDove 2013-02-20 19:10:44
@Kryptonite:根據上下文,是的,但是你沒有提供更多的信息,所以我建議將是:嘗試它:) – 2013-02-20 19:11:29
謝謝,優秀的答案。 – KryptoniteDove 2013-02-20 19:16:16
如果obj.someFunc()
和$(obj).someFunc()
這兩個作品和someFunc
是一個jQuery函數,那麼它意味着obj
是一個jQuery對象。
在這種情況下,$(obj)
只是一個多餘的呼叫。
區別非常簡單 - 在第一種情況下,您每次都調用$(),第一種情況爲$(obj).someFunc()。在第二種情況下,obj。someFunc(),你在呼喚它只是一次,並保存它導致一種叫做可變OBJ
var obj = $(this);
它就像您創建類的實例,你可以訪問和使用obj
和它最好同時使用:
`$(obj)`
是多餘的初始化是您創造另一個類的實例和相同對象分配給它。所以沒有使用或我說使用它的任何優勢。
如果你像上面那樣定義了obj,沒有理由使用'$(obj)',因爲它是多餘的。 '$($($($($(obj)))))' – 2013-02-20 19:04:57
在一個jQuery插件中,'this'是jQuery對象,所以你重新包裝它兩次? – adeneo 2013-02-20 19:06:32
取決於你是否已經在'this.each'裏面了 – 2013-02-20 19:07:22