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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
js去除重复字符串两种实现方法
Jan 09 Javascript
jquery清空textarea等输入框实现代码
Apr 22 Javascript
JS分页控件 可用于无刷新分页
Jul 23 Javascript
javascript学习笔记(三)BOM和DOM详解
Sep 30 Javascript
Bootstrap零基础学习第一课之模板
Jul 18 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
微信小程序实现锚点跳转
Nov 23 Javascript
swiperjs实现导航与tab页的联动
Dec 13 Javascript
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编程注意事项的小结
2013/04/27 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
解决laravel session失效的问题
2019/10/14 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
js几个验证函数代码
2010/03/25 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
Python接口测试文件上传实例解析
2020/05/22 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
java程序员面试交流
2012/11/29 面试题
单位介绍信范文
2014/01/18 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
党校团干班培训心得体会
2016/01/06 职场文书