謝謝大家提前。這是我第一次開發一個jQuery插件(並且實際上第一次使用JavaScript進行開發),並且我不得不說我非常喜歡(可能有很多可怕的東西給你經驗豐富的js/jquery開發人員,但這是我的第一次嘗試 - 請忍受我:)。我也歡迎任何代碼的任何建設性的批評。jQuery插件開發 - 將參數傳遞給用戶定義的回調函數
這是一個模型框插件(是的,還有其他的,但工作要求規定我編碼我自己以避免第三方依賴),它顯示給定的文本,來自ajax調用的文本或給定/採用的表單從ajax調用,然後通過ajax處理表單提交。這需要儘可能定製,所以我試圖提供一些鉤子(?? - 匿名函數),用戶可以使用它來將自定義代碼傳遞給插件。
我遇到的問題是向用戶功能提供參數。如果我使用關鍵字'this',我可以很好地傳遞'msg'變量,並且用戶函數可以使用它。但是,當我通過'味精'而不是'這個'用戶得到一個空白變量。我想要傳遞的不僅僅是msg - 也是一個在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();
}
tl dr;你能提供一個更簡短的例子嗎? – Greg 2009-08-17 14:29:53
剛剛做到了,對此表示遺憾 – 2009-08-17 14:31:26