ありがとうございます。これは初めてのjQueryプラグインの開発です(実際にはJavascriptで初めて開発しています)。私はかなり気に入っていると言わざるを得ません(js/jquery開発者を熟練している人には恐ろしいことが多分あります。最初の試み - 私と一緒に負担してください:)。私はコードについても建設的な批判を歓迎する。jQueryプラグインの開発 - パラメータをユーザー定義のコールバック関数に渡す
これは、指定されたテキスト、ajax呼び出しのテキスト、または指定された/取得されたフォームを表示する、モデルボックスのプラグインです(はい、他にもありますが、仕事の要件によってサードパーティの依存関係を避けるために自分自身をコードすることが指示されます) ajax呼び出しからフォームの送信を処理します。これは可能な限りカスタマイズ可能でなければならないので、ユーザーがカスタムコードをプラグインに渡すために使用できるいくつかのフック(? - 匿名関数)を提供しようとしています。
私が抱えている問題は、ユーザー関数にパラメータを提供することです。キーワード 'this'を使用すると、 'msg'変数をうまく渡すことができ、ユーザー関数がそれを使用できます。しかし、 'this'の代わりに 'msg'を渡すと、ユーザーは空白の変数を取得します。私はmsgだけでなく、ajax呼び出しで渡されるデータの配列よりも多くを渡したいと思います。モデルボックスのjQueryオブジェクトは、私が本当にやりたいことです。
以下はスニペットです。この関数はプラグインの内部にあり、プラグイン内で呼び出されています。私はちょうどいくつかのコードを組織/開発目的のための関数にグループ化しました。
// Submits the form inside of the model box
// and calls the user hooks of onFormSuccess and
// onFormFailure for ajax success and error
function submitForm() {
var URL = $('form',$contentNode).attr('action'),
method = $('form',$contentNode).attr('method'),
data = $('form',$contentNode).formSerialize();
$.ajax({
url: URL,
type: method,
data: data,
success: function(msg) {
// Doesn't work, but I would like it too
//settings.onFormSuccess.call(msg, breakData(data));
// Does work
settings.onFormSuccess.call(this);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
setings.onFormFailure.call(errorThrown);
}
});
closeModel();
}
tl dr;より短い例を提供できますか? – Greg
さようなら、ごめんなさい –