-1

私はいくつかを探していますJquery plugins、そして私は自分自身を作りたいです。すべてのチュートリアルで、次のような構文が表示されます。

(function($) {
  $.fn.myPlugIN = function() {
    // Add plugin code here
  };
})(jQuery);

しかし、iScroll.js、Carousel、jsなどのいくつかの人気のあるプラグインのコードを見ると、$。fn構文を使用していないことがわかります。それらは1つの関数内に記述しています。

(function(){
function iScroll (el, options) {
    var that = this, i;
    //some code
    }
    })();

それらの機能とそれらの使用の違いは何ですか?

4

2 に答える 2

3

これが、jQueryプラグインと基本的なjavascriptプラグイン(またはモジュール)の違いです。

iScrollはjQueryを使用しません。jQueryプラグインとして定義する理由はありません。特定のフレームワークに基づかないほとんどのjavascriptプラグインと同様に、グローバル名前空間を乱雑にしない多くのプライベート変数を定義できる非常に便利なモジュールパターンに基づいています。表示するスニペットには、グローバル名前空間で一意の変数がエクスポートされる部分が含まれていません。

ソースを参照してください:

if (typeof exports !== 'undefined') exports.iScroll = iScroll;
else window.iScroll = iScroll;
于 2013-02-11T09:38:06.160 に答える
2

iScroll(そして私も想定しCarouselています)はjQueryプラグインではないため、コードビハインド構文は少し異なります。

jQueryプラグインは、jQueryオブジェクトを処理する拡張関数です。たとえば、foojQueryプラグインを作成すると、のようなものを介してそれを使用できるはずです$('#some-element').foo();

このように機能するために、jQueryプラグインは次のように変数$に関数を追加することでプロトタイプを拡張します。$.fn

$.fn.foo = function () {
    // foo!
};

iScroll一方、jQueryプラグインではありません。jQueryオブジェクトでは機能しないため、のように機能することは期待できません$('#some-element').iScroll();。自分自身を呼び出すことによってそれを使用しiScroll()ます。

var obj = new iScroll('container');

ご想像のとおり、使用方法の違いにより、スクリプトファイルでプラグインを宣言するさまざまな方法が決まります。

于 2013-02-11T09:47:05.093 に答える