今天,我唯一關於jQuery的緊迫問題是關於何時使用jQuery.extend()
和jQuery.fn
(它用於插件)。羅勒高盛似乎在「Defining your own functions in jQuery」有一個解釋,但由於某種原因,我仍然不滿意,我有最好的信息。一旦我們開始與jQuery.fn
合作,我們就必須考慮是否應該建立一個完整的插件。這意味着三個問題:擴展,添加新功能和構建插件。應該有一個解釋結合所有三個。這值得解釋嗎?我們有一個解釋嗎?jQuery:擴展,添加一個新功能並構建一個插件?
5
A
回答
7
我想你可能會覺得太辛苦。 :)
在jQuery的源 - 延伸()被定義一次並且在兩個命名空間中使用:
jQuery.extend = jQuery.fn.extend = function() { .. };
從技術上講,所有這些功能不是合併在一起的對象屬性。
所以在最基本的使用情況下,您只需合併兩個對象爲單一對象(很像插件選項參數):
this.options = $.extend({}, defaultOptions, userOptions); // Just mergin' objects
平原上簡$ || jQuery的命名空間的擴展功能只是將該函數添加爲jquery名稱空間中類似靜態的函數。繼承jQuery名稱空間的函數通常是那些不需要元素進行操作的函數。這些函數就像isArray()和isFunction()以及更多。
var noWhiteSpace = $.trim(string); // No element needed
jQuery.fn或多或少地保留用於執行基於傳遞到jquery對象的元素的動作的函數。這些就像普通的插件,以及你在jQuery中習慣的大多數東西。
$('div').css('border', '1px solid green'); // Do work on a set of elements
更有趣的是,如果你看看jQuery源代碼中的$ .data()函數。它在兩個名稱空間中定義。它首先在$命名空間中定義,並將and元素作爲第一個參數。它稍後擴展到$ .fn,並簡單地將第一個參數設爲'this'。
希望這就是你要找的!
相關問題
- 1. 創建並擴展一個jQuery插件
- 2. 擴展一個jquery插件或在基礎插件之上構建mixins?
- 3. 擴展一個rails插件
- 4. 擴展jQuery插件對象與功能
- 5. 擴展Laravel之刃:不能添加一個擴展
- 6. 向jQuery地圖突出顯示插件添加上一個/下一個功能
- 7. 創建一個擴展另一個PHP擴展的PHP擴展?
- 8. jQuery的$(這)一個插件功能
- 9. 向Elgg River添加一個新功能
- 10. 如何調用一個jQuery插件(創建新的插件)的功能?
- 11. 什麼是添加一個jQuery插件
- 12. 添加變量到一個jQuery插件
- 13. 添加一個jQuery插件選項
- 14. jQuery擴展功能
- 15. 構建一個Wordpress插件
- 16. 它不能創建一個Chrome擴展
- 17. Phonegap - 爲iOS擴展一個插件
- 18. ggplot2:添加一個新功能並強制它返回
- 19. 擴展一個jQuery原型
- 20. 哪個選項最好擴展一個特性1)添加一個屬性或者2)創建一個新表?
- 21. jQuery驗證插件添加成功類到另一個元素
- 22. 創建一個谷歌實驗室般的擴展功能
- 23. 創建一個jQuery插件
- 24. php擴展,但有一個新的構造函數...可能嗎?
- 25. WrapPanel爲每個動態擴展控件創建一個新列
- 26. 將擴展方法添加到List並返回一個
- 27. 添加功能的tablesorter(jQuery插件)
- 28. 爲Firefox擴展添加功能
- 29. 如何擴展一個jQuery插件的選項與數組
- 30. 如何從另一個覆蓋方法擴展jquery插件?
我很感謝你的回答!我已經將YUI 2.x的遺留代碼移植到jQuery中(可能),所以我必須認爲「很難」;現在,當你有一堆「私有」支持時,需要構建一個插件功能爲「公共」擴展功能---對嗎? – rasx 2009-10-19 22:29:22
這將是使用插件的原因,是的! – 2009-10-19 22:44:51