如何创建回调包装器?

Med*_*tor 2 javascript jquery jquery-forms-plugin

我使用ajaxSubmit.

form.ajaxSubmit(successCallback);
Run Code Online (Sandbox Code Playgroud)

我需要为successCallback创建包装器.

这该怎么做?

我试过了

form.ajaxSubmit(wrapperCallBack(successCallback));

var wrapperCallBack = function (successCallback) {
        debugger;
        changeState(false);
        successCallback(this);
    };
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

你非常接近:

form.ajaxSubmit(wrapperCallBack(successCallback));

var wrapperCallBack = function (successCallback) {
    return function() {
        changeState(false);
        return successCallback(this);
    };
};
Run Code Online (Sandbox Code Playgroud)

或者我更喜欢写它:

form.ajaxSubmit(wrapperCallBack(successCallback));

function wrapperCallBack(successCallback) {
    return function() {
        changeState(false);
        return successCallback(this);
    };
}
Run Code Online (Sandbox Code Playgroud)

在那里,wrapperCallback创建一个函数来包装其参数(successCallback参数)并返回该函数.

这两个假设您将wrapperCallBack不止一次地使用创建包装器.如果您只需要一次性,那么您可以使用内联匿名函数:

form.ajaxSubmit(function() {
    changeState(false);
    return successCallback(this);
});
Run Code Online (Sandbox Code Playgroud)