0

私は一般的に次のようなコードを持つ1つのプラグインを使用しています:

(function ($) {

    $.fn.makeEditable = function (options) {
        function _fnGetRowIDFromAttribute(row) {
            return "foo";
        }

         return this.each(function () {
             //some code
        });
    };
})(jQuery);

_fnGetRowIDFromAttribute外部プラグイン、つまり自分のページから呼び出すにはどうすればよいですか?

4

2 に答える 2

2

グローバル スコープから関数にアクセスできるようにし、jQuery 規則を尊重する場合は、jQuery オブジェクトにアタッチする必要があります。

(function ($) {
    $._fnGetRowIDFromAttribute = function(row) {
        return "foo";
    }

    $.fn.makeEditable = function (options) {
         return this.each(function () {
             //some code
        });
    };
})(jQuery);

または、名前空間に配置することもできます。

(function ($) {
    $.myModule = $.myModule || {};
    $.myModule._fnGetRowIDFromAttribute = function(row) {
        return "foo";
    }

    $.fn.makeEditable = function (options) {
         return this.each(function () {
             //some code
        });
    };
})(jQuery);

別の注意: 関数が $.fn.makeEditable のスコープを使用しない場合、$.fn.makeEditable を呼び出すたびに再定義する必要はありません。jQueryプラグインを指定するために使用されるimmediate関数で定義できます。

最後になりましたが、名前がアンダースコアで始まる変数または関数は、それがプライベートであり、外部から呼び出されるべきではないことを示す従来の方法です。そのため、名前の変更を検討する必要があります。

于 2012-05-27T07:02:59.823 に答える
1

外部からアクセスできるようにしたい場合は、次の行を置き換える必要があります。

function _fnGetRowIDFromAttribute(row) {

この行で:

_fnGetRowIDFromAttribute = function(row) {

これにより、関数がグローバル スコープに追加されます。モジュール ブロックの外で関数を定義することもできます。

于 2012-05-27T06:53:12.833 に答える