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静态的动态
Sep 18 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
详解jQuery选择器
Dec 21 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
JavaScript canvas绘制渐变颜色的矩形
Feb 18 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
如何让vue长列表快速加载
Mar 29 Vue.js
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输出xml属性的方法
2015/03/19 PHP
php简单smarty入门程序实例
2015/06/11 PHP
比较完整的微信开发php代码
2016/08/02 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
JavaScript SHA512&SHA256加密算法详解
2015/08/11 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
php中and 和 &&出坑指南
2018/07/13 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
python判断windows隐藏文件的方法
2014/03/21 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python基础练习之几个简单的游戏
2017/11/10 Python
python遍历小写英文字母的方法
2019/01/02 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
Python进行特征提取的示例代码
2020/10/15 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
工程安全员岗位职责
2014/03/09 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
期中考试复习计划
2015/01/19 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2019年工作总结范文
2019/05/21 职场文书
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
详解SQL的窗口函数
2022/04/21 Oracle