今日、jQueryに関する私の唯一の質問は、jQuery.extend()
とjQuery.fn
(プラグインで使用される)をいつ使うべきかということです。バジルゴールドマンは "Defining your own functions in jQuery"に説明があるようですが、何らかの理由で私はまだ私が最良の情報を持っていることに満足していません。 jQuery.fn
で作業を開始したら、本格的なプラグインを構築する必要があるかどうかを検討する必要があります。これは、拡張、新しい関数の追加、プラグインの構築といった3つの問題を意味します。この3つをすべて綿密に説明する必要があります。これは説明に値するのですか?jQuery:拡張、新しい関数の追加とプラグインの構築?
5
A
答えて
7
あなたはあまりにも難しいと思うかもしれないと思います。 :) jQueryのソースに
- 伸びる()は一度定義し、両方の名前空間で使用される:
jQuery.extend = jQuery.fn.extend = function() { .. };
技術を、すべてのこの機能は、一緒にマージプロパティオブジェクトではありません。
だから、最も基本的なユースケースには、あなただけの単一のオブジェクト(多くのプラグインのオプション・パラメータのような)の中に2つのオブジェクトをマージ:プレーンジェーン$ || jQueryの名前空間に機能を拡張
this.options = $.extend({}, defaultOptions, userOptions); // Just mergin' objects
その関数を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()関数のようなものを見ると、両方の名前空間で定義されています。これは$ namespaceで最初に定義され、最初のパラメータとしてandを取ります。後で$ .fnに拡張され、最初のパラメータが 'this'として設定された最初の関数が呼び出されます。
あなたが探しているものが欲しいです!
関連する問題
- 1. jQueryクラスと関数の拡張問題
- 2. jQueryプラグインを拡張する
- 3. jQueryプラグインを拡張する
- 4. jqueryプラグインを拡張して負の数を確認する
- 5. vimとNERDツリー拡張 - ファイルの追加
- 6. YUI3プラグインとクラスの拡張
- 7. jQueryプラグインのオーサリング - jQueryオブジェクトとjQuery.fnオブジェクトの拡張
- 8. Skypeの拡張機能を構築したいと思っています。
- 9. パフォーマンスに関するJavaScript拡張機能とNPAPIプラグインの違い
- 10. C++でlistControlクラスを拡張して新しい関数を追加する方法は?
- 11. 複数のプラグインからのRCP拡張
- 12. PHP - PHPのデータオブジェクトを拡張して新しい機能を追加する
- 13. PHPの拡張addslashes関数
- 14. Eclipseプラグイン拡張と展望
- 15. カスタムメソッドでJQuery Validatorプラグインを拡張する
- 16. ES6プラグインをjQueryプロトタイプに拡張する
- 17. TableLayoutクラスの拡張 - 行の追加
- 18. 外部のJarライブラリを追加してCordovaプラグインを構築する(イオンフレームワーク)
- 19. Mac OS X:関数を追加して共有ライブラリを拡張する
- 20. Lua関数の追加構文
- 21. 拡張クラスの呼び出し関数
- 22. NSURLファイル拡張子の追加など
- 23. HtmlHelper拡張メソッドのrouteValuesに追加
- 24. 新しい拡張メソッド
- 25. OOPの問題:クラスを拡張し、関数とjQueryのような構文をオーバーライドする
- 26. F#のタイプ拡張として余分なメソッドを追加
- 27. プラグイン/ランタイム拡張アーキテクチャ
- 28. Jquery lazyloadプラグインとコールバック関数
- 29. Python 3.1.1 with --enable-shared:拡張子を構築しません
- 30. collections.dequeを拡張して "ファイルバッファ"を構築できますか?
私はあなたの答えをありがとう!私はYUI 2.xからレガシーコードをjQueryに移しているので、「難しい」と考える必要があります。[ 今、プラグインを構築する必要があるのは、「プライベート」サポートがある場合です"public"拡張機能のための関数---右? – rasx
これは、プラグインを使用する理由ですね、うん! –