2011-10-11 66 views
0

所以我構建了一個自定義對話框JQuery插件,但是在回調函數方面存在問題。 我試圖在對話框關閉後重新加載頁面,但是我的問題是頁面幾乎立即重新加載,所以我只能看到對話框的瞬間,當它實際上應該在消失前顯示5秒鐘時。 任何想法我做錯了什麼?我希望消息在頁面重新加載之前淡出。JQuery自定義插件 - 回調函數很快就會觸發

這裏是我的電話給插件:

$('.messages').myPlugin({ 
     'message' : 'Testing' 
},function(){location.reload()}) 

這裏是插件腳本:

(function($){ 

$.fn.myPlugin = function(options, callback) { 
    if (typeof callback == 'function') { // make sure the callback is a function 
      callback.call(this); // brings the scope to the callback 
    } 
    var settings = { 
     //DEFAULT OPTIONS 
     ...OPTIONS IN HERE.... 

    }; 
    if (options) { 
     $.extend(settings, options); 
    }; 
    return this.each(function() { 
     .....BUILD THE DIALOG.... 
    }); 
    return this;//Leave this to allow chaining 
}; 

}) (jQuery的);

+1

正在直接調用插件功能的第二行回調...調用該函數,當您關閉對話框來代替。 –

回答

0

插件init代碼立即調用提供的回調函數。這是該行:

callback.call(this); 

如果你還是不明白爲什麼/回調是如何被調用時,使用調試器將斷點回調的內部,通過代碼—看看調用堆棧和它應該很清楚。

call stack

+1

杜!我有一種感覺是這個問題,我把它放在我的閉合函數中,用於隱藏對話框,它現在完美的工作! – JimmyJammed