2011-10-11 67 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