js插件
来源:互联网 发布:信息技术网络研修总结 编辑:程序博客网 时间:2024/06/05 20:28
jquery 插件开发方式有三种,
1 $.extend() 相当于向jquery添加了静态函数
2.$.fn 向Jquery添加新的方法
3.$.widget()
别人的帖子说使用$.fn是最常见的,第三种比较麻烦,怪我太懒没有试过。
下面开始抄袭别人的帖子了:
第一种方式
$.extend({
log:function(message) {
var now =new Date(),
y = now.getFullYear(),
m = now.getMonth() + 1,//!JavaScript中月分是从0开始的
d = now.getDate(),
h = now.getHours(),
min = now.getMinutes(),
s = now.getSeconds(),
time = y +'/' + m +'/' + d +' ' + h +':' + min +':' + s;
console.log(time +' My App: ' + message);
}
})
$.log('initializing...');//调用
第二种方式
$.fn.myPlugin =function() {
//在这里面,this指的是用jQuery选中的元素
//example :$('a'),则this=$('a')
this.css('color','red');
}
<ul>
<li>
<a href="http://www.webo.com/liuwayong">我的微博</a>
</li>
<li>
<a href="http://http://www.cnblogs.com/Wayou/">我的博客</a>
</li>
<li>
<a href="http://wayouliu.duapp.com/">我的小站</a>
</li>
</ul>
<p>这是p标签不是a标签,我不会受影响</p>
<script src="jquery-1.11.0.min.js"></script>
<script src="jquery.myplugin.js"></script>
<script type="text/javascript">
$(function(){
$('a').myPlugin();
})
</script>
第三种方式不介绍了,过程就是这么简单。
但是
为了让插件方便维护,插件慢慢的变大了,在$.fn.myPlugin东搞一下,西搞一下就不好了,咋办呢,
使用面向对象的方式
var Beautifier =function(ele, opt) {
this.$element = ele,
this.defaults = {
'color':'red',
'fontSize':'12px',
'textDecoration':'none'
},
this.options = $.extend({},this.defaults, opt)
}
//定义Beautifier的方法
Beautifier.prototype = {
beautify:function() {
returnthis.$element.css({
'color':this.options.color,
'fontSize':this.options.fontSize,
'textDecoration':this.options.textDecoration
});
}
}
//在插件中使用Beautifier对象
$.fn.myPlugin =function(options) {
//创建Beautifier的实体
var beautifier =new Beautifier(this, options);
//调用其方法
return beautifier.beautify();
}
调用方式:
$(function() {
$('a').myPlugin({
'color':'#2C9929',
'fontSize':'20px'
});
})
到此为止,差不多了,但是使用这个插件定义对象,那么对象会被定义到window对象上,所以为了不让这种事情发生,我们使用匿名函数封装一下,对命名空间不会污染。
;(function($, window, document,undefined) {
//定义Beautifier的构造函数
var Beautifier =function(ele, opt) {
this.$element = ele,
this.defaults = {
'color':'red',
'fontSize':'12px',
'textDecoration':'none'
},
this.options = $.extend({},this.defaults, opt)
}
//定义Beautifier的方法
Beautifier.prototype = {
beautify:function() {
returnthis.$element.css({
'color':this.options.color,
'fontSize':this.options.fontSize,
'textDecoration':this.options.textDecoration
});
}
}
//在插件中使用Beautifier对象
$.fn.myPlugin =function(options) {
//创建Beautifier的实体
var beautifier =new Beautifier(this, options);
//调用其方法
return beautifier.beautify();
}
})(jQuery, window, document);
第一个;是干啥的呢?你想啊,在调用你这个插件之前,如果js缺少了;咋办。。就像写sql语句的时候,占了两行是不是会多写一个空格。
第二个问题,undefined参数,为什么要有?为什么没有传该参数。这个是防止undefined被别人重新定义了,那我们这插件就有bug了。不传该参数,就是相当于传了一个undefined给它。
阅读全文
0 0
- js插件
- js 插件
- js插件
- js插件
- js-------插件
- js插件
- js插件
- js插件
- js插件
- js插件-Map插件
- JS VLC插件 js
- js插件 leaflet插件库
- thickbox.js插件学习
- myeclipse js插件
- js框架和插件
- js时间插件
- js日历插件:My97DatePicker
- js表单验证插件
- 每天一个 Linux 命令(39):grep 命令
- Android自定义View
- command not found: shopt linux 配置./bashrc 错误
- java标示符
- 基于stm32的热释传感器模块(库函数编程)
- js插件
- LR与SVM的异同
- [杂题] Codeforces 794D Round #414 D. Labelling Cities
- python 中__name__ = '__main__' 的作用
- M_SYSTEM
- strlen和sizeof的区别
- RabbitMQ在Ubuntu 16.04下的安装教程——官方文档翻译
- NGUI开发优化技巧(上)
- T_CHOUSA