JQuery 自定义插件 - 回调函数触发得太快

发布于 2024-12-09 11:28:34 字数 846 浏览 0 评论 0原文

所以我构建了一个自定义对话框 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);

So I have built a custom dialog JQuery Plugin, but am having issues with the callback function.
I am trying to reload the page after the dialog closes, but my problem is the page reloads pretty much right away, so I only see the dialog for a split second, when it should actually be displayed for 5 seconds before fading away.
Any ideas what I am doing wrong? I want the message to fade out prior to the page reloading.

Here is my call to the plugin:

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

And Here is the plugin script:

(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 );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染年凉城似染瑾 2024-12-16 11:28:34

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

callback.call(this);

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

调用堆栈

The plugin init code calls the provided callback immediately. It's this line:

callback.call(this);

If you still don't understand why/how the callback is being called, use a debugger to put a breakpoint inside of the callback and step through the code — look at the call stack and it should be pretty clear.

call stack

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文