3

私の元の(作業中の)コードは次のようになります。

jQuery().ready(function ($) {
    $('[id="errorMessages"]').ajaxStart(function () {
        $(this).html("");
    });
    $('[id="errorMessages"]').ajaxError(function (e, jqxhr, settings, exception) {
        //...
    });
});

匿名関数を次のような名前付き関数呼び出しに置き換えようとしている場合: (そのような実装を期待するいくつかの要件に対して POC を実行しています。)

function fs() {
        $(this).html("");
}
function fe(e, jqxhr, settings, exception) {
        //...
}
jQuery().ready(function ($) {
    $('[id="errorMessages"]').ajaxStart(fs());
    $('[id="errorMessages"]').ajaxError(fe(e, jqxhr, settings, exception));
});

パラメータ「e」が未定義であるというエラーが表示されます。ただし、パラメーターのない関数は正常に機能しているようです。

匿名関数がどのようにパラメーターを受け取ることができるのか疑問に思っていますが、外部関数を呼び出すときは同じものを使用できません。

これらのパラメーター化された匿名関数を通常の関数呼び出しに変換する方法はありますか?

4

1 に答える 1

6

関数をハンドラーに正しく割り当てていません。これを試してください。

jQuery().ready(function ($) {
    $('[id="errorMessages"]').ajaxStart(fs);
    $('[id="errorMessages"]').ajaxError(fe);
});

括弧なしで関数の名前を渡すことは、イベントが発生したときに使用する必要があるその関数の参照を与えることを意味することに注意してください。

現在のコードは、イベントがアタッチされたときに関数を呼び出し (したがって、 を取得する理由'e' is undefined)、関数の結果をイベント ハンドラーに割り当てます。

于 2013-09-12T09:51:27.777 に答える