0

私はjsファイルにこれを持っています:

$(document).ready(function(e){
    jQuery.fn.SaveAdd = function(titulo,contenido,tags) {
       // code
    }
});

そして、js を HTML ドキュメントにインポートし、関数を呼び出しました。

$(document).ready(function(){
    $("#iSave").click(function(){
        // declaration of vars instead of this line
        $(this).SaveAdd(title,content,tags);    
    });
});

そして、私はエラーがあります: メソッド SaveAdd がありません。しかし、これを使用する場合:

$(document).ready(function(){
        // declaration of vars instead of this line
        $(this).SaveAdd(title,content,tags);    
});

関数は正しく実行されます:S 何が悪いのかわかりません...

4

2 に答える 2

3

プラグインはハンドラーにラップしないでください。これによりdocument.ready、jQuery への関数の追加が手遅れになるまで延期されます。通常のパターンは次のとおりです。

(function($) {

     $.fn.SaveAdd = function(...) {
         ...
     };

})(jQuery);

プラグイン モジュール内で jQuery のエイリアスとして使用する必要はありませんが、通常の規則です。$

編集あなたの本当の問題は、独自のバージョンのjQueryを動的に(requirejsを使用して)ロードし、通常の方法でエクスポートしないライブラリ(Aloha)の使用にあるようです。コメントで述べたように、これがエラーメッセージで問題が報告された理由です-jQueryオブジェクトを返していない[object Object]という明確な兆候。$(...)

これらの競合を解決する方法の詳細については、 http://aloha-editor.org/guides/dependencies.htmlを参照してください。

于 2013-02-10T12:26:19.517 に答える
1

あなたが私たちに提供してくれたコードでは、jQuery 用のプラグインを作成しているようで、次のようになります。

(function($) {

     $.fn.SaveAdd = function(titulo,contenido,tags) {
         //your great code
     };

})(jQuery);

ここにサンプルがあります

(function($) {
    $.fn.SaveAdd = function(titulo, contenido, tags) {
        alert(titulo);
        alert(contenido);
        alert(tags);
    };
})(jQuery);

$(document).ready(function() {
    $("#iSave").click(function() {
        $(this).SaveAdd("hehe", "hahha", "hohoo");
    });
});

ここでどのように機能するかを参照してくださいhttp://jsfiddle.net/K4Tfg/

これについて読むと、問題が確実に解決されます: http://docs.jquery.com/Plugins/Authoring

于 2013-02-10T12:26:53.840 に答える