详解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 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
JS获取DropDownList的value值与text值的示例代码
Jan 07 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
浅谈Vue网络请求之interceptors实际应用
Feb 28 Javascript
JS动画定时器知识总结
Mar 23 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 Javascript
小程序中的箭头函数的具体使用
Jun 19 Javascript
详解JavaScript匿名函数和闭包
Jul 10 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访问Google Search API的方法
2015/03/05 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
python包的导入方式总结
2021/03/02 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
工程师求职简历的自我评价分享
2013/10/10 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
演讲稿格式
2014/04/30 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
二十年同学聚会感言
2015/07/30 职场文书
python 逐步回归算法
2021/04/06 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript