jQuery插件的怎么写
对于jQuery之前一直用,也看到过别人写的插件,直到最近才想着学习怎么写自己的jQuery插件,今天看了网上的一些资料,发现其实很简单的。
先看一个简单的jQuery插件的例子
<script>
(function($){
$.fn.extend({
"bold":function(){
return this.css({fontWeight:"bold"});
},
"red":function(){
return this.css({color:"red"});
}
});
})(jQuery);
</script>
使用的时候要先导入jquery插件,比如$("p").bold().red(),这样p标签内容就会变为红色粗体。
那么,如何写一个正确的jQuery的插件呢?
首先,插件的结构是这样的
(function($){
})(jQuery);
这种结构在javascript中叫做闭包,能够不被编译器执行。
然后,在闭包中写插件的功能,有两种写法
第一种:就是上面例子中的,这种适合写有多个函数的插件,例子中的bold和red就是定义的两个插件的名字。
第二种:
(function($){
jQuery.fn.bold=function(){
return this.css({fontWeight:"bold"});
};
jQuery.fn.red=function(){
return this.css({"color":"red"});
}
})(jQuery);
可以看做是定义了两个函数,分别是bold和red。
jQuery.extend()的介绍和使用
注意,区别于上面的jQuery.fn.extend()。
jQuery.extend()有几个重载方法
一、jQuery.extend(desc,src1,src2,src3...)
用来把后面的参数src1、src2。。合并到desc中,比如
var src1={name:petty,age:20}
var src2={name:tim,sex:female}
var desc={name:tom}
var result=jQuery.extend(desc,src1,src2),
结果result={name:tim,age:20,sex:female},同时desc也变为合并后的值,也就是说如果后面的参数和前面的参数有相同的属性值,则后面的属性会覆盖前面的属性。有时候我们不希望改变desc的值,则可以用{}代替desc,
jQuery.extend({},src1,src2,...)
上述的extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将该src合并到调用extend方法的对象中去,如:
$.extend(src)
该方法就是将src合并到jquery的全局对象中去,如:
$.extend({
hello:function(){alert('hello');}
});
二、jQuery.extend(boolean,desc,src1,src2...)
第一个boolean为布尔值,意为是否深度覆盖,后面的参数与上面的一致。所谓深度覆盖,看下面的例子。
var result=jQuery.extend(true,{},
{name:tim,size:{width:20,length:30}},
{name:cat,age:20,size:{width:10,height:50})
则结果为result={name:cat,age:20,size:{width:10,length:30,height:50}}
如果第一个参数为false,则结果应该是这样result={name:cat,age:20,size:{width:10,height:50}}
下面是一个较完整的例子
<script type="text/javascript">
(function($){
jQuery.fn.bold=function(options){
var result=jQuery.extend(defaults,options);
return this.css({fontWeight:result.fontWeight});
};
jQuery.fn.color=function(options){
var result=jQuery.extend(defaults,options);
return this.css({"color":result.color});
}; var defaults={
fontWeight:"bold",
color:"green"
}; })(jQuery); $(function(){
var options={
color:"red"
};
$("p").bold().color(options);
});
</script>
jQuery插件的怎么写的更多相关文章
- jQuery插件——下拉选择框
其实,之前也写过jQuery插件,今天写的是一个模拟select选择的下拉插件. 既然是jQuery插件,那么必然是依赖jQuery的了. 老规矩,直接上代码吧! ;(function () { $. ...
- 自己写jquery插件之模版插件高级篇(一)
需求场景 最近项目改版中,发现很多地方有这样一个操作(见下图gif动画演示),很多地方都有用到.这里不讨论它的用户体验怎么样. 仅仅是从复用的角度,如果每个页面都去写text和select元素,两个b ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- 什么?你还不会写JQuery 插件
前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论 ...
- 写JQuery 插件 什么?你还不会写JQuery 插件
http://www.cnblogs.com/Leo_wl/p/3409083.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui ...
- 写jQuery插件
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- 写JQuery插件的基本知识
普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: 复制代码 代码如下: $.extend(object) 可以理解为JQuery 添加一个静态方法. $.fn.exten ...
- 教你写Jquery插件
最近很多网友说 jQuery插件是什么啊?怎么写的啊?我不会写啊? 一大堆的问题一时都不知道怎么回答他们,个人认为是网友们把问题复杂化了. 其实就是把一些常用.实用.通用的功能封装起来而以,简单的来讲 ...
- [原创作品]手把手教你怎么写jQuery插件
这次随笔,向大家介绍如何编写jQuery插件.啰嗦一下,很希望各位IT界的‘攻城狮’们能和大家一起分享,一起成长.点击左边我头像下边的“加入qq群”,一起分享,一起交流,当然,可以一起吹水.哈,不废话 ...
随机推荐
- jquery源码分析(三)——工具函数
jQuery.extend({ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "&quo ...
- CentOS 7.3降低内核版本为7.2
查看当前内核版本: [root@nineep ~]# uname -r 2.3.10.0-514.2.2.el7.x86_64 查看当前发行版本: [root@nineep ~]# cat /etc ...
- Spring MVC-集成(Integration)-生成RSS源示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_rss_feed.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...
- 网易杭研后台技术中心的博客 -MYSQL :OOM
http://backend.blog.163.com/blog/#m=0&t=3&c=mysql
- wps h5制作软件
相当好用这个
- HDU 4516
此题不难,但我就是RE,搞不懂啊...郁闷. 说下基本算法吧,只要留意到要分解的因式是(x+ai)..的形式,x前是系数为1的,而且,它们的绝对值在1000以内,于是,好办了.只要枚举(x+k)中的k ...
- Hadoop - YARN 启动流程
一 YARN的启动流程 watermark/2/text/aHR ...
- 基于ArcGIS Flex API实现动态标绘(1.1)
动态标绘API 1.1版本号.相较前一版本号1.0(点击进入).该版本号提供标绘符号的编辑功能. 编辑功能包含两种编辑状态:编辑控制点.对标绘符号进行旋转.八方向拉伸.平移. 编辑控制点例如以下图所看 ...
- Android Fragment和Activity的交互介绍
Fragment和Activity的交互 一个Fragment的实例总是和包括它的Activity直接相关. fragment能够通过getActivity() 方法来获得Activity的实例.然后 ...
- Get Length 使用dynamic关键字
http://www.codewars.com/kata/566f571ed78037c7b6000036/train/csharp You don't have any idea what is t ...