[英]jQuery Plugin Development - passing parameters to user defined callback function
提前謝謝大家。 這是我第一次開發jQuery插件(實際上也是第一次使用javascript開發),我不得不說我很怪異(對於經驗豐富的js / jquery開發者來說,它可能有很多可怕的東西,但這是我的第一次嘗試-請忍受我:)。 我也歡迎對任何代碼進行建設性的批評。
這是一個模型框插件(是的,還有其他,但是工作要求決定我自己編寫代碼以避免第三方依賴性),用於顯示給定的文本,來自ajax調用的文本或來自ajax調用的給定/采用的表單然后通過ajax處理表單提交。 這需要盡可能地可定制,所以我試圖提供一些掛鈎(??-匿名函數),用戶可以使用它們將定制代碼傳遞給插件。
我遇到的問題是為用戶功能提供參數。 如果使用關鍵字“ this”,則可以很好地傳遞“ msg”變量,並且用戶功能可以使用它。 但是,當我通過“ msg”而不是“ this”時,用戶會得到一個空白變量。 我不僅想傳遞味精,還希望傳遞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();
}
請參閱call
語法 。 第一個參數決定了this
將是回調函數本身內。 它不作為參數傳遞給回調函數。
要將參數傳遞給回調,請使用call
的其余參數:
settings.onFormSuccess.call(thisArg, msg, dataArray);
回調將接收兩個參數,並以this
指向thisArg
:
function successHandler(msg, dataArray) {}
與您的代碼的另一個問題是值this
你成功處理程序內是沒有意義的。 從外觀上看,它只會指向window
對象。 因此,您調用的回調也將與this == window
一起運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.