详解jQuery插件开发方式


Posted in Javascript onNovember 22, 2016

jQuery插件开发 

一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法;另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通过选择器获取的jQuery对象实例也能共享该方法。

一、jQuery扩展

1、$.extend(object)

类似于.Net的扩展方法,用于扩展jQuery。然后就可以用$.的方式调用。

$(function(){
 $.extend({ fun1: function () { alert("为jQuery扩展一个fun1函数!"); } });
 $.fun1();
 })

2、$.fn.extend(object)

扩展jQuery的对象。

$.fn.extend({ fun2: function () { alert("执行方法2"); } });
 $("#id1").fun2();

可以用google来看看:

详解jQuery插件开发方式

上面的写法等同于:

$.fn.fun2 = function () { alert("执行方法2"); }
 $(this).fun2();

二、私有域

其定义方式如下:

(function ($) { })(jQuery);
//相当于
var fn = function (xxoo) { };
fn(jQuery);

以下代码弹出123。

$(function(){
 var fn = function (xxoo) { };
 fn(alert(123));
 })

三、定义插件的基本步骤

1、定义作用域

开发一个jQuery插件,首先要把插件的代码与外界隔离开来,外部的代码不允许直接访问插件内部的代码,插件内部的代码也不影响外部。

    //步骤1 定义插件私有作用域

(function ($) {

 })(jQuery);

 这样就能保证插件内部的代码与外界隔离了。

2、扩展jQuery

定义了作用域之后,为了能够让外部调用,就需要将插件扩展到jQuery。

//步骤1 定义私有作用域
 (function ($) {
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 
 }
 })(jQuery);

    3、默认值

定义了jQuery插件之后,如果希望某些参数具有默认值,那么可以以这种方式来指定。

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 })(jQuery);

     4、支持jQuery选择器

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 this.each(function () {

 });
 })(jQuery);

    5、支持jQuery的链式调用

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 //步骤5 支持链式调用(将步骤4返回)
 return this.each(function () {

 });
 })(jQuery);

     6、插件内部方法

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };

 //步骤6 在插件里定义函数
 var MyFun = function (obj) {
 alert(obj);
 }

 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 //步骤5 支持链式调用(将步骤4返回)
 return this.each(function () {
 //步骤6 在插件里定义函数
 MyFun(this);
 });
 })(jQuery);

    由于作用域关系,步骤6的私有函数目前允许的插件内部使用。

 以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
javascript 常用关键字列表集合
Dec 04 Javascript
JavaScript 函数调用规则
Sep 14 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
vue项目添加多页面配置的步骤详解
May 22 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
vue 实现滚动到底部翻页效果(pc端)
Jul 31 Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
AngularJS中isolate scope的用法分析
Nov 22 #Javascript
详解js界面跳转与值传递
Nov 22 #Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 #Javascript
JavaScript面向对象分层思维全面解析
Nov 22 #Javascript
浅析location.href跨窗口调用函数
Nov 22 #Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
You might like
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
原创jQuery弹出层插件分享
2015/04/02 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
通过python检测字符串的字母
2020/02/18 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python 基于wx实现音乐播放
2020/11/24 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
linux面试题参考答案(6)
2016/06/23 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
七年级生物教学反思
2014/01/30 职场文书
女生节标语
2014/06/26 职场文书
《穷人》教学反思
2016/02/19 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers