jQuery 带有插件的插件原型

jQuery Plugin prototype with addons

我创建了一个免费的 jQuery 插件,我想做的是创建一些附加组件,以便我的客户在付款时使用。

所以,假设我免费提供的免费 jQuery 插件将 hello world 附加到 html div 标签中,我想创建一个附加组件使 div 背景颜色变为红色。

免费版插件:

(function(window, $) {
    var example = function(elem, options) {
        this.elem = elem;
        this.$elem = $(elem);
        this.options = options;
        this.metadata = this.$elem.data('example-options');
    };

    example.prototype = {
        defaults: {
            message: 'Hello world!'
        },

        init: function() {
            this.config = $.extend({}, this.defaults, this.options, this.metadata);
            this.displayMessage();
            return this;
        },

        displayMessage: function() {
            this.$elem.append('<h1>'+this.config.message+'</h1>');
        }
    }

    example.defaults = example.prototype.defaults;

    $.fn.example = function(options) {
        return this.each(function() {
            new example(this, options).init();
        });
    };

window.example = example;
})(window, jQuery);

而且我想创建一个插件,它将位于不同的 js 文件中,如下所示:

example.prototype = {
    bgColor: function() {
        this.$elem.css('background-color', '#f00');
    }
};

我该怎么做?

无需替换您创建的默认 prototype,只需添加并覆盖您希望更改的方法即可。例如,您可以将 bgColor 方法添加到 prototype,如下所示:

example.prototype.bgColor = function() {
    this.$elem.css('background-color', '#f00');
};

要覆盖方法以提供增强功能,您可以这样做:

example.prototype.displayMessage = function() {
    this.$elem.append('<h1>This message comes from the add-on</h1>');
}

请注意,要使其正常工作,附加 js 文件包含在默认插件 js 文件之后。