本文總結整理一下如何寫一個jquery插件?雖然現今各種mvvm框架異常火爆,但是jquery這個陪伴我們成長,給我們帶來很多幫助的優秀的庫不應該被我們拋棄,寫此文章,作為對以往欠下的筆記的補充,以及對jquery的重溫。
寫jquery插件有三種方法:
1.使用$.extend()來拓展jquery;
2.使用$.fn來給jquery添加新的方法;
3.使用$.widget()應用jquery UI的部件工廠方式創建。
方法一:
$.extend({ 'sayHello':function(msg){ console.log(msg); }, $(function(){ $.sayHello('Hello jQuery!!!');//Hello jQuery!!! }); });
方法二:
//方法二(基本):jQuery.fn = jQuery.prototype = { //} $.fn.myplugin = function(){ this.css('background','red'); }
//方法二(傳參): $.fn.myPlugin = function(opt){ var defaults = { 'bgc':'red', 'fontSize':'12px' }; var settings = $.extend({},defaults,opt); debugger; this.css({ 'background':settings.bgc, 'fontSize':settings.fontSize }); }
//繼續升級方法二,改造成面向對象的形式來定義插件,提升插件的可讀性可維護性, ;(function($,window,document,undefined){ var Beautifier = function(ele,opts){ this.$element = $(ele); this.defaults = { 'bgc':'red', 'fontSize':'12px' } this.settings = $.extend({},this.defaults,opts); }; Beautifier.prototype = { 'construct':Beautifier, 'bueatify':function(){ return this.$element.css({ 'background':this.settings.bgc, 'fontSize':this.settings.fontSize }) } } $.fn.myplugin2 = function(opts){ var bt = new Beautifier(this,opts); return bt.bueatify(); } })(jQuery,window,document);
//調用 $(function(){ $("a").myplugin2({ 'bgc':'red', 'fontSize':'50px' }); });
執行結果:
方法三:這個方法用的較少,暫時不做研究講解。