簡體   English   中英

jQuery插件開發-將參數傳遞給用戶定義的回調函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM