锋利的Jquery解惑系列(二)------插件开发大总结
申明:插件开发是实际项目就经常用到的,不过也是挺吃力的。笔者自己做项目时,看着我们老大写的jQuery一头桨糊,那叫个痛苦。后面果断买了本参考书以及浏览别人的博客,现在也算慢慢入门了。现在总结自己的一点理解,希望对大家有帮助。如果有错,希望大家一起交流,共同提高!
一、jQuery插件可以分为3种类型
- 封装对象方法的插件
- 封装全局函数的插件
- 选择器插件
二、封装对象方法的插件的书写形式
形式一:
(function($){
$.fn.extend({
pluginName:function(opt,callback){
//our plugin implementsation code goes here.
}
})
})(jQuery)
形式二:
(function($){
$.fn.pluginName=function(){http://i.cnblogs.com/?postid=3957061&update=1
//our plugin implementsation code goes here.
};
})
示例一:有jQuery名称空间下申明一个名字
$.fn.hilight=function(){
//our plugin implementation coode goes here
}
我们的插做的是通过这样可以调用
$('myDiv').hilight();
示例 二:接受options参数以控制插件的行为
让我们为我们的插件添加功能指定前景色和背景色的功能。我们也许会让选项像一个options对象传递给插件,如:
//plugin definition
$.fn.hilight=function(options){
var defaults={
frontGround:"red",
backGround: "yellow"
};
//extend our default options with those provided
var opts=$.extends(defaults,options);
//our plugin implementsation code goes here.
};
我们的插件可以这样被调用:
$("myDiv").hilight({
frontGround:"blue"
});
示例 三:暴露插件的默认设置
我们应当对上面代码的一种改进是暴露插件的默认设置。这对于让插件的使用者更容易用较少的代码覆盖和修改插件接下来我们开始利用函数对象。
//plugin definition
$.fn.hilight=function(options){
//extend our default options with those provided
//Note that the first arg to extnd is an empty object-
//this is to keep from overriding our "defaults" object.
var opts=$.extend({},$.fn.hilight.defaults,options);
//our plugin implementsation code goes here.
};
// plugin defaluts - added as a property on our plugin function
$.fn.hilights.defaluts={
frontGround:"red",
backGround:"yellow"
};
现在使用者可以包含像这样的一行在他们的脚本里:
//这个只需要调用一次,且不一定要在ready块中调用
$.fn.hilight.defaults.frontGround="blue";
接下来我们可以像这样使用插件的方法,结果它设置蓝色为前景色;
$("#myDiv").hilight();
如上,我们允许使用者写一行代码在修改的默认前景色。而且使用者仍然在需要的时候可以有选择的覆盖这些新的默认值:
//覆盖插件缺省的背景色
$.fn.hilight.defaults.frontGround="blue";
//使用一个新的缺省设置调用插件
$('.hilightDiv').hilight();
三、封装全局函数的插件
全局函数的插件可以理解为就是给jQuery类添加类方法,并且是静态的方法。就像$.ajax()和$.trim(),将函数定义于jQuery的命名空间中。他有如下几种形式:
形式一:添加单个全局函数
jQuery.myFoo=functin(){
alert("this is myFoo function")
};
形式二:添加多个全局函数
jQuery.myFoo=functin(){
alert("this is myFoo function")
};
jQuery.myFoo1=functin(param){
alert("this is myFoo1 function with a param " + param)
};
形式三:使用jQuery.extend(Object);
jQuery.myFoo1=functin(param){
alert("this is myFoo1 function with a param " + param)
};
jQuery.extend({
myFoo:function(){
alert("this is myFoo function")
},
myFoo1:function(param){
alert("this is myFoo1 function with a param " + param
}
});
形式四:使用命名空间
虽然在jQuery命名空间中,我们禁止使用了大量的javascript函数名和变量名,但是仍然不可避免某些函数或变量名将于其它的jQuery插件冲突,所以我们选择将一些方法封装到另一个命名空间下。
jQuery.myPlugin={
myFoo:function(){
alert("this is myFoo function")
}
myFoo1:function(param){
alert("this is myFoo1 function with a param " + param)
}
}
采用命名空间的函数仍然是全局函数,调用时采用的方法:
$.myPlugin.myFoo();
$.myPlagin.myFoo1("rah");
锋利的Jquery解惑系列(二)------插件开发大总结的更多相关文章
- 锋利的Jquery解惑系列(三)------ 各路选择器大聚会
申明:初次学习Jquery的选择器时只记得几个和css选择器类似的几个,在这里列出书上写上的各路选择器方便以后的查询和现在的学习 所有例子都来自书上 测试画面: 一.基本选择器 #id, $(&quo ...
- 锋利的Jquery解惑系列(一)------基本概念大锅炖
声明:虽然是基本概念但也是笔者经过一番学习才总结的这些文章,所以他不包括Jquery优缺点.特点.语法的介绍. 概念一:jQuery对像与DOM对象 DOM(Document Object Model ...
- [jQuery学习系列二 ]2-JQuery学习二-数组操作
前言 上一篇内容 已经对于Jquery 有了一些认识, 包括Jquery的选择器和DOM对象, 那么这一篇继续来看下Jquery中很实用的Jquery对于数组的操作. Jquery中对数组的操作大致有 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
<Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十】
<Web 前端开发精华文章推荐>2013年第八期(总第二十期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】
<Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】
<Web 前端开发精华文章推荐>2014年第2期(总第23期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery)
jQuery下拉框操作系列$("option:selected",this) &&(锋利的jQuery) <!DOCTYPE html> <ht ...
- Jquery全选系列操作(锋利的jQuery)
Jquery全选系列操作(锋利的jQuery) <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
随机推荐
- 最短路变形 poj3615&
问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...
- DevExpress的GridControl控件更新數據問題解決辦法
開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時會同步更新後臺數據. ...
- 让SecureCRT vi中显示多色彩
方法1: 1.打开SecureCRT___选项__会话选项___仿真 右边的中端选择linux,把ANSI 颜色和使用颜色方案打上钩. 2.选择外观,右边的使用颜色和闪烁都打上钩. 3.重新连接使所该 ...
- maven依赖规则
1.就近原则,传递依赖 A-B-C -> A-C 2.先声明原则 A-B-C D-E-C 依赖的规则阻止了jar包冲突
- Spring源码入门——XmlBeanDefinitionReader解析
接上篇[] ,我们看到BeanDefinitionReader解决的是从资源文件(xml,propert)到BeanDefinition集合的过程.所以BeanDefinitionReader接口有两 ...
- spring的有状态BEAN和无状态BEAN
有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...
- cocos2d-x学习笔记
转自:http://blog.csdn.net/we000636/article/details/8263503 接受触屏事件的优先级是值越小,响应触屏事件的优先级越高 Z值越大,越外面 JNI:允许 ...
- cocos2d-x触屏事件(单点触屏)
转自:http://blog.csdn.net/onerain88/article/details/7550009 一般经常用到的触屏的情况有两种:一种是Layer统一接收触屏消息,然后由程序根据需要 ...
- hdu2571动态规划
125ms.... 太慢了...dp[i][j] = max(dp[i][j-1],dp[i-1][j],dp[i][k],1<k<j&&j%k==0); #include ...
- 赵雅智:js知识点汇总
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0 ...