javascript - 如何添加一些 jQuery 插件完成回调

标签 javascript jquery plugins methods callback

我的问题是如何像这个例子一样添加到一些 jQuery pugin...

$('#Div').myPluginLoad();

像这样添加完成回调...

$('#Div').myPluginLoad().done(function(){
    alert('task finished..!!');
});

执行另一个函数....

在我的插件中:

(function ($) {

    $.fn.extend({    
        myPluginLoad: function (options) {    

            //  defaults
            var defaults = {
                padding: 20,
                mouseOverColor: '#000000',
                mouseOutColor: '#ffffff'
            }    
            var options = $.extend(defaults, options);    
            return this.each(function () {    
                /**
                 *    SOME ASYNC TASK
                 **/    
            });
        }
    });
})(jQuery);

请帮忙!!

最佳答案

像这样的东西应该可以工作:

(function ($) {

    $.fn.extend({    
        myPluginLoad: function (options) {    
            var def = $.Deferred();

            //  defaults
            var defaults = {
                padding: 20,
                mouseOverColor: '#000000',
                mouseOutColor: '#ffffff'
            }    
            var options = $.extend(defaults, options);
            var deferredList = [];

            this.each(function () { 
                var innerDef = $.Deferred();
                deferredList.push(innerDef.promise());

                $.ajax({...}) //just for example
                .done(function() {
                    innerDef.resolve();                    
                });
            });

            $.when.apply($, deferredList).done(function() {
               def.resolve(); 
            });

            return def.promise();
        }
    });
})(jQuery);

您需要创建一个延迟对象来返回,表示所有项目何时完成加载。然后,您需要为 this.each() 的每次迭代创建另一个 deferred。当所有这些延迟都已解决后,解决您返回的那个。

关于javascript - 如何添加一些 jQuery 插件完成回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574001/

相关文章:

javascript - AngularJS - HTTP 请求在 Controller 中发出预检请求但不在 app.js 中

javascript - HTML 和 JavaScript 合作实验室

jquery - 如何实现页面向上滚动显示的固定 'contact details' 面板?

plugins - 我在我的项目中使用了 `sbt-buildinfo`,但它没有生成 BuildInfo.scala 文件

jQuery 确认(外部插件)无法正常工作

java - Jib 插件无法访问由另一个 Gradle 插件更新的 project.version

javascript - Knockout js隐藏图片div

javascript - 在我的网站上,我的一些内容被标题覆盖了。无论如何我可以解决这个问题吗

javascript - 无法获取 Javascript 中的文本框值

jquery - Fadein With JQUERY 点击外部 html 文件