2013-03-29 23 views
1

我使用ajaxSubmit。如何爲回叫創建包裝?

form.ajaxSubmit(successCallback); 

我需要爲successCallback創建包裝。

如何做到這一點?

我試圖

form.ajaxSubmit(wrapperCallBack(successCallback)); 

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

@ T.J.Crowder http://jquery.malsup.com/form/ – gdoron

+0

@gdoron:謝謝。我不得不說,誰低估了你的答案就是*非常苛刻。我沒有看到任何問題(當它消失時,它已經達到了滿意的程度),如果丹尼斯需要一次性完成,那麼這個答案是非常有效的答案。 –

回答

5

你八九不離十:

form.ajaxSubmit(wrapperCallBack(successCallback)); 

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

或者像我寧願把它寫:

form.ajaxSubmit(wrapperCallBack(successCallback)); 

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

在那裏,wrapperCallback創建了一個函數來包裝圍繞其參數(參數successCallback)並返回該函數。

這兩種都假定您將使用wrapperCallBack多次創建包裝。如果您只需要一次性的,那麼你可以使用內聯匿名函數:

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