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 相关文章推荐
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
javascript中的注释使用与注意事项小结
Sep 20 Javascript
jQuery中ajax错误调试分析
Dec 01 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
LayUI表格批量删除方法
Aug 15 Javascript
layui的table中显示图片方法
Aug 17 Javascript
js通过循环多张图片实现动画效果
Dec 19 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
React Hook用法示例详解(6个常见hook)
Apr 28 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判断电子邮件是否正确方法
2018/12/04 PHP
PHP 实现链式操作
2021/03/09 PHP
JavaScript的Cookies
2008/01/16 Javascript
javascript 写类方式之二
2009/07/05 Javascript
javascript闭包入门示例
2014/04/30 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
DOM 事件流详解
2015/01/20 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
微信小程序之蓝牙的链接
2017/09/26 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
python基础教程之循环介绍
2014/08/29 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
Django后台admin的使用详解
2019/07/08 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
促销活动策划方案
2014/01/12 职场文书
生日宴会策划方案
2014/06/03 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
党性分析材料格式
2014/12/19 职场文书
2015年维修工作总结
2015/04/25 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers