【问题标题】:JQuery Custom Plugin - Callback Function Fires Too SoonJQuery 自定义插件 - 回调函数触发太快
【发布时间】:2011-10-11 21:35:52
【问题描述】:

所以我已经构建了一个自定义对话框 JQuery 插件,但我遇到了回调函数的问题。 我试图在对话框关闭后重新加载页面,但我的问题是页面几乎立即重新加载,所以我只看到对话框一瞬间,实际上它应该在消失之前显示 5 秒钟。 任何想法我做错了什么?我希望消息在页面重新加载之前淡出。

这是我对插件的调用:

    $('.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 );

【问题讨论】:

  • 您是在插件函数的第二行直接调用回调...而是在关闭对话框时调用该函数。

标签: jquery jquery-plugins callback


【解决方案1】:

插件初始化代码立即调用提供的回调。就是这一行:

callback.call(this);

如果您仍然不明白为什么/如何调用回调,请使用调试器在回调中放置断点并单步执行代码 - 查看调用堆栈应该很清楚。

【讨论】:

  • 呃!我有一种感觉是问题所在,我将它放在用于隐藏对话框的关闭函数中,现在它可以正常工作了!
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多