详解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 相关文章推荐
JS获取随机数函数可自定义最小值最大值
May 08 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
Vue开发中整合axios的文件整理
Apr 29 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
vuejs 制作背景淡入淡出切换动画的实例
Sep 01 Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 Javascript
Vue实现附件上传功能
May 28 Javascript
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
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
jquery连缀语法如何实现
2012/11/29 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
javascript将非数值转换为数值
2018/09/13 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python numpy中cumsum的用法详解
2019/10/17 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
指针和引用有什么区别
2013/01/13 面试题
海南地接欢迎词
2014/01/14 职场文书
高二物理教学反思
2014/02/08 职场文书
司法所长先进事迹
2014/06/02 职场文书
千与千寻观后感
2015/06/04 职场文书
《社戏》教学反思
2016/02/22 职场文书
赞美教师的句子
2019/09/02 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
Pytorch 实现变量类型转换
2021/05/17 Python
Pandas 数据编码的十种方法
2022/04/20 Python