Search code examples
javascriptjqueryjquery-forms-plugin

How create wrapper for callback?


I use ajaxSubmit.

form.ajaxSubmit(successCallback);

I need create wrapper for successCallback.

How to do this?

I tried

form.ajaxSubmit(wrapperCallBack(successCallback));

var wrapperCallBack = function (successCallback) {
        debugger;
        changeState(false);
        successCallback(this);
    };

Solution

  • You're pretty close:

    form.ajaxSubmit(wrapperCallBack(successCallback));
    
    var wrapperCallBack = function (successCallback) {
        return function() {
            changeState(false);
            return successCallback(this);
        };
    };
    

    Or as I would prefer to write it:

    form.ajaxSubmit(wrapperCallBack(successCallback));
    
    function wrapperCallBack(successCallback) {
        return function() {
            changeState(false);
            return successCallback(this);
        };
    }
    

    There, wrapperCallback creates a function to wrap around its argument (the successCallback argument) and returns that function.

    Both of those assume you're going to use wrapperCallBack to create wrappers more than once. If you only need a one-off, then you can just use an inline anonymous function:

    form.ajaxSubmit(function() {
        changeState(false);
        return successCallback(this);
    });