首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展jQuery插件?

如何扩展jQuery插件?
EN

Stack Overflow用户
提问于 2011-05-18 21:36:18
回答 1查看 477关注 0票数 5

我想要创建一个jQuery插件来包装图表组件。它将具有像addLineSerie或addBarsSerie这样的函数。然后,我想要创建其他插件来扩展这个插件,以添加新功能或覆盖所需的内容,但仍然能够调用原始插件函数。

我从下面的方法开始。这有点工作,但正如我后来意识到的那样,我不能调用原始的“父”实现(如果我创建了myB的一个实例,就不能调用myA.goA2)。

代码语言:javascript
复制
(function($){
    $.fn.myA = function(settings) {
        this.goA = function() {alert("goA: "+settings);};
        this.goA2 = function() {alert("goA2: "+settings);};
        return this;
    };
})(jQuery);

(function($){
    $.fn.myB = function(settings) {
        this.myA(settings);
        this.goA2 = function() {alert("goA2B: "+settings);};
        this.goB = function() {alert("goB: "+settings);};
        return this;
    };
})(jQuery);

所以我有两个问题:

implementation?

  1. 是正确的,还是我应该用另一种方式来做呢?
  2. 如何使“父”和“子”是同一个实例?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 22:00:46

这似乎是正确的,但是要完成跨插件的行为,你就不能这样做:

代码语言:javascript
复制
(function($) {
    $.fn.myA = function(settings) {
        this.goA = function() {
            alert("goA: " + settings);
        };
        this.goA2 = function() {
            alert("goA2: " + settings);
        };
        return this;
    };
})(jQuery);

(function($) {
    $.fn.myB = function(settings) {
        this.myA = $.fn.myA(settings);
        this.goA2fromA = function() {
            this.myA.goA2();
        };
        this.goA2 = function() {
            alert("goA2B: " + settings);
        };
        this.goB = function() {
            alert("goB: " + settings);
        };
        return this;
    };
})(jQuery);

$(document).ready(function() {
    var a = $('#one').myA({});
    var b = $('#one').myB({});
    a.goA2();
    b.goA2fromA();
});

编辑:修正了对myA的调用,并添加了一个调用。检查一下工作的小提琴:

http://jsfiddle.net/PqQgs/4/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6051308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档