详解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 相关文章推荐
jqPlot 基于jquery的画图插件
Apr 26 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
AngularJs  Using $location详解及示例代码
Sep 02 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
vue-router 手势滑动触发返回功能
Sep 30 Javascript
24个ES6方法解决JS实际开发问题(小结)
May 31 Javascript
javascript操作向表格中动态加载数据
Aug 27 Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 Javascript
从原生JavaScript到React深入理解
Jul 23 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
JS操作JSON要领详细总结
2013/08/25 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
js实现tab栏切换效果
2020/08/02 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python之web模板应用
2017/12/26 Python
基于Python的PIL库学习详解
2019/05/10 Python
python分数表示方式和写法
2019/06/26 Python
Python如何转换字符串大小写
2020/06/04 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
几款好用的python工具库(小结)
2020/10/20 Python
电台编导求职信
2014/05/06 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书