本文总结整理一下如何写一个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'
});
});
执行结果:
方法三:这个方法用的较少,暂时不做研究讲解。