2009-07-30 4 views
3

私は次のような何かを達成しようとしているが、いただきました!間違って知らないのです:jQueryプラグインパブリックメソッド/機能

$.a = function() { 

// some logic here 

function abc(id) { 
    alert('test'+id); 
} 


} 

$.a.abc('1'); 

私は帰りの機能を使用してみましたが、それdoesntのはどちらか動作するようです。誰かが助けてくれますか?

ありがとうございます。

答えて

9

$.a自体が機能していなければならないので、あなたは$.a関数のプロパティとしてabc機能を追加する必要があります:あなたができる、abc$.a関数内で定義されなければならない場合

$.a = function() { 
    // some logic here... 
}; 

$.a.abc = function (id) { 
    alert('test' + id); 
}; 

以下をせよ。この方法を使用しているときに$.aが呼び出されるまで$.a.abcは利用できません。関数が呼び出されるまで、関数内の何も評価されません。

$.a = function() { 

    // Do some logic here... 

    // Add abc as a property to the currently calling function ($.a) 
    arguments.callee.abc = function (id) { 
     alert('test' + id); 
    }; 
}; 

$.a(); 
$.a.abc('1'); 
+0

が、私はそれが関数内の関数になりたいです。私は$ .aの構造を変更することはできません。 –

+0

ああ、そうだ。私の例を更新します。 – Blixt

+1

クールで素敵な答え!ありがとうございました。 –

1
$.a = (function(){ 
    var a = function() { 
     //... 
    }; 
    a.abc = function() { 
     //... 
    } 
    return a; 
})();