jQuery定义插件的方法


Posted in Javascript onDecember 18, 2015

有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery。我曾经也是这样的人,直到有一次公司里的技术交流,我才改变了自己对自己的看法。

扩展jquery的时候。最核心的方法是以下两种:

$.extend(object) 可以理解为jquery添加一个静态方法

$.fn.extend(object) 可以理解为jquery实例添加一个方法

$.extend(object)

 例子:

/* $.extend 定义与调用
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$.extend({ fun: function () { alert("执行方法一"); } });//定义
$.fun();//调用
$.fn.extentd(object)
/* $.fn.extend 定义与调用
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$.fn.extend({ fun: function () { alert("执行方法"); } });
$(this).fun();
//等同于
$.fn.fun = function () { alert("执行方法三"); }
$(this).fun();

定义jquery插件的基本结构

1.  定义作用域:

为插件定义一个私有作用域。外界代码不能直接访问插件内部。插件内部代码不受外界干扰,也不会污染到全局变量。

//step 定义JQuery的作用域
(function ($) {
})(jQuery);

2. 为插件添加扩展方法:

//step01 定义JQuery的作用域
(function ($) {
  //step02 插件的扩展方法名称
  $.fn.easySlider = function (options) {
    
  }
})(jQuery);

3. 设置默认值:

//step 定义JQuery的作用域
(function ($) {
  //step-a 插件的默认值属性
  var defaults = {
    prevId: ‘prevBtn‘,
    prevText: ‘Previous‘,
    nextId: ‘nextBtn‘,
    nextText: ‘Next‘
    //……
  };
  //step 插件的扩展方法名称
  $.fn.easySlider = function (options) {
    //step-b 合并用户自定义属性,默认属性
    var options = $.extend(defaults, options);
  }
})(jQuery);

其中:var options = $.extend(defaults, options)的含义了。表示 options 去覆盖了defaults的值,并把值赋给了options。
在插件环境中,就表示用户设置的值,覆盖了插件的默认值;如果用户没有设置默认值的属性,还是保留插件的默认值。

4. 支持jquery选择器:    

//step 定义JQuery的作用域
(function ($) {
  //step-a 插件的默认值属性
  var defaults = {
    prevId: ‘prevBtn‘,
    prevText: ‘Previous‘,
    nextId: ‘nextBtn‘,
    nextText: ‘Next‘
    //……
  };
  //step 插件的扩展方法名称
  $.fn.easySlider = function (options) {
    //step-b 合并用户自定义属性,默认属性
    var options = $.extend(defaults, options);
    //step 支持JQuery选择器
    this.each(function () {
    });
  }
})(jQuery);

5 .支持JQuery的链接调用:

为了能达到链接调用的效果必须要把循环的每个元素return

//step 定义JQuery的作用域
(function ($) {
  //step-a 插件的默认值属性
  var defaults = {
    prevId: ‘prevBtn‘,
    prevText: ‘Previous‘,
    nextId: ‘nextBtn‘,
    nextText: ‘Next‘
    //……
  };
  //step 插件的扩展方法名称
  $.fn.easySlider = function (options) {
    //step-b 合并用户自定义属性,默认属性
    var options = $.extend(defaults, options);
    //step 支持JQuery选择器
    //step 支持链式调用
    return this.each(function () {
    });
  }
})(jQuery);

6. 插件里的方法:

在插件里定义的方法,外界不能直接调用,我在插件里定义的方法也没有污染外界环境。

//step01 定义JQuery的作用域
(function ($) {
  //step03-a 插件的默认值属性
  var defaults = {
    prevId: ‘prevBtn‘,
    prevText: ‘Previous‘,
    nextId: ‘nextBtn‘,
    nextText: ‘Next‘
    //……
  };
  //step06-a 在插件里定义方法
  var showLink = function (obj) {
    $(obj).append(function () { return "(" + $(obj).attr("href") + ")" });
  }
  //step02 插件的扩展方法名称
  $.fn.easySlider = function (options) {
    //step03-b 合并用户自定义属性,默认属性
    var options = $.extend(defaults, options);
    //step4 支持JQuery选择器
    //step5 支持链式调用
    return this.each(function () {
      //step06-b 在插件里定义方法
      showLink(this);
    });
  }
})(jQuery);

通过以上内容给大家介绍了jQuery定义插件的方法,希望大家喜欢。

Javascript 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
Div Select挡住的解决办法
Aug 07 Javascript
javascript 装载iframe子页面,自适应高度
Mar 20 Javascript
js跟随滚动条滚动浮动代码
Dec 31 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
JavaScript和jQuery制作光棒效果
Feb 24 Javascript
小程序文字跑马灯效果
Dec 28 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
深入探索VueJS Scoped CSS 实现原理
Sep 23 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
jQuery Validate插件实现表单强大的验证功能
Dec 18 #Javascript
jquery实现二级导航下拉菜单效果
Dec 18 #Javascript
学习jQuey中的return false
Dec 18 #Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 #Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 #Javascript
javascript实现保留两位小数的多种方法
Dec 18 #Javascript
原生js实现图片轮播特效
Dec 18 #Javascript
You might like
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
教大家制作简单的php日历
2015/11/17 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
Open and Print a Word Document
2007/06/15 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
python编码最佳实践之总结
2016/02/14 Python
python微信公众号开发简单流程
2018/03/23 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python的scipy实现插值的示例代码
2019/11/12 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
Jdbc数据访问技术面试题
2012/03/30 面试题
商务英语求职自荐信范文
2013/12/24 职场文书
勾股定理课后反思
2014/04/26 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
师德师风培训感言
2015/08/03 职场文书
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python