Heim > Web-Frontend > js-Tutorial > Detaillierte Einführung in die jQuery-Plug-in-Entwicklung

Detaillierte Einführung in die jQuery-Plug-in-Entwicklung

迷茫
Freigeben: 2017-03-26 16:43:30
Original
1076 Leute haben es durchsucht

Vorwort

Die jQuery-Plug-in-Entwicklung umfasst zwei Arten:

  1. Statische Methoden zu jQuery hinzufügen

  2. Prototyp für jQuery Methode hinzufügen

Statische Methode zu jQuery hinzufügen

  1. Neue globale Funktion direkt hinzufügen

jQuery.foo = function() {
alert('This is a test. This is only a test.');
}
Nach dem Login kopieren

2. Verwenden Sie jQuery.extend(object)

jQuery.extend({
foo: function() {
alert('This is a test. This is only a test.');
},
bar: function(param) {
alert('This function takes a parameter, which is "' + param +'".');
}
});
Nach dem Login kopieren

Bei einigen global konfigurierten Plug-Ins können Sie diese im Plug-In aufrufen, sodass Sie ohne Aufruf direkt auf das Plug-In-Javascript verweisen können

Methoden zum jQuery-Prototyp hinzufügen

Dies ist die am häufigsten verwendete Methode in der Plug-in-Entwicklung

Die einfachste Form

(function($){       
    $.fn.pluginName = function() {     
         // code    
    };     
})(jQuery);
Nach dem Login kopieren

Kontext

Im unmittelbaren Bereich der Plug-In-Funktion verweist das Schlüsselwort this auf das jQuery-Objekt, das das Plug-In aufruft. Es ist nicht erforderlich, es mit $

(function($){
    $.fn.pluginName = function() {      
        // 没有必要再写$(this),因为"this"就是jQuery对象             
    };          
})(jQuery);
Nach dem Login kopieren

zu verwalten der Kettenaufruf

Um den Kettenaufruf aufrechtzuerhalten, geben Sie diesen bitte für Plug-ins zurück.

Standardparameter festlegen und verfügbar machen

(function($){
    $.fn.pluginName = function(options) {    
        var opts = $.extend({}, $.fn.hilight.defaults, options);      
    };  

    $.fn.pluginName.defaults = {    
        foo: 'bar'   
    };                      
})(jQuery);
Nach dem Login kopieren

Auf diese Weise können Benutzer entweder Parameter übergeben oder die Standardparameter ändern, indem sie $.fn.pluginName.defaults ändern

Einige verfügbar machen öffentliche Funktionen

(function($){
    $.fn.pluginName = function(options) {    
        var opts = $.extend({}, $.fn.pluginName.defaults, options);      
    };  

    $.fn.pluginName.defaults = {    
        foo: 'bar'   
    };  

    $.fn.pluginName.foo = function() {    
        return 'bar';    
    };                  
})(jQuery);
Nach dem Login kopieren

damit Benutzer öffentliche Funktionen sowohl aufrufen als auch ändern können.

Eine sicherere Möglichkeit, Abschlüsse zu schreiben

;(function($,window,document,undefined){
    $.fn.pluginName = function() {     
         // code    
    };
})(jQuery,window,document);
Nach dem Login kopieren

Das Hinzufügen von „;“ soll Fehler verhindern, die durch das Fehlen von „;“ im vorherigen Code verursacht werden Das Hinzufügen von Fenstern und Dokumenten ist für Windows und andere Systeme so. Variablen verfügen über eine lokale Referenz innerhalb des Plug-Ins, wodurch die Zugriffsgeschwindigkeit verbessert werden kann. Gleichzeitig können diese Variablen auch intern komprimiert werden, um zu verhindern, dass andere Variablen versehentlich darauf zugreifen Undefinierte Änderungen vornehmen und Plug-in-Fehler verursachen.

Mehr

Das Folgende stammt aus dem Blog eines Internetnutzers

(function () {   
    var Plugin,
        privateMethod;  //插件的私有方法
     
    /**
     * 这里是一个自运行的单例模式。
     * 
     */
    Plugin = (function () {
 
        /**
         * 插件实例化部分,初始化时调用的代码可以放这里
         */
        function Plugin(element, options) {
            //将插件的默认参数及用户定义的参数合并到一个新的obj里
            this.settings = $.extend({}, $.fn.plugin.defaults, options);
            //将dom jquery对象赋值给插件,方便后续调用
            this.$element = $(element);
             
        }
 
        /**
         * 插件的公共方法,相当于接口函数,用于给外部调用
         */
        Plugin.prototype.doSomething = function () {
            /**
             * 方法内容
             */
        };
         
        return Plugin;
 
    })();
 
    /**
     * 插件的私有方法
     */
    privateMethod = function () {
     
    };
 
    /**
     * 这里是关键
     * 定义一个插件 plugin
     */
    $.fn.plugin = function (options) {
        var instance;
        instance = this.data('plugin');
        /**
         *判断插件是否已经实例化过,如果已经实例化了则直接返回该实例化对象
         */
        if (!instance) {
            return this.each(function () {
                //将实例化后的插件缓存在dom结构里(内存里)
                return $(this).data('plugin', new Plugin(this, options));
            });
        }
        if (options === true) return instance;
        /**
         * 优雅处: 如果插件的参数是一个字符串,则 调用 插件的 字符串方法。
         * 如 $('#id').plugin('doSomething') 则实际调用的是 $('#id).plugin.doSomething();
         * doSomething是刚才定义的接口。
         * 这种方法 在 juqery ui 的插件里 很常见。
         */
        if ($.type(options) === 'string') instance[options]();
        return this;
    };
     
    /**
     * 插件的默认值
     */
    $.fn.plugin.defaults = {
        property1: 'value',
        property2: 'value'
    };
 
    /**
     * 优雅处: 通过data-xxx 的方式 实例化插件。
     * 这样的话 在页面上就不需要显示调用了。
     */
    $(function () {
        return new Plugin($('[data-plugin]'));
    });   
}).call(this);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die jQuery-Plug-in-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage