详解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实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
浅谈Sizzle的“编译原理”
Apr 14 Javascript
javascript中不易分清的slice,splice和split三个函数
Mar 29 Javascript
javascript事件模型介绍
May 31 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 Javascript
详解一些适用于Node.js的命名约定
Dec 08 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笔记之:数据类型与常量的使用分析
2013/05/14 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
向左滚动文字 js代码效果
2013/08/17 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python使用sorted排序的方法小结
2017/07/28 Python
python实现画圆功能
2018/01/25 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
应届生服装设计自我评价
2013/09/20 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
索赔员岗位职责
2015/02/15 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书