编写自己的jquery插件之基础

1、编写jquery插件要遵循命名规范,通常情况下,jquery插件采用这种模式进行命名:jquery.pluginName.js,压缩版为:jquery.pluginName.min.js

2、编写jquery插件的方式有3种,第一种是通过jquery函数的原型属性来编写插件。第二种是采用jQuery.extend()方法。第三种是使用强大的jQuery UI Widget Factory编写插件。这里我选择用jQuery函数的原型属性来编写。

  2.1    jQuery源码中有这样一句代码:jQuery.fn = jQuery.prototype = { //jquery goes here// },这句代码的意思是,把jQuery函数的原型对象赋值给jQuery的fn属性,在jQuery.fn属性上添加方法就相当于在jQuery的原型对象上添加方法。我们就是通过jQuery.fn来编写jQuery插件。

  2.2    一个小例子:

1 (function($){
2     $.fn.highlight1= function(){
3       this.css(‘backgroundColor‘, ‘#fffceb‘).css(‘color‘, ‘#d85030‘);
4       return this;
5     }
6 })(jQuery);

         在这个例子中,我们为jquery扩展了一个highlight1()方法,我们可以像调用jQuery默认的方法那样调用我们扩展的这个highlight1()方法。 1 $(selector).highlight1(); 。这句代码会把匹配的选择器的背景颜色和字体颜色变成highlight1()方法中设置的颜色。

    这样,一个简单的jQuery插件就编写完成了。可能有的朋友会疑惑,为什么要renturn this?原因是我们自己扩展的jQuery方法也要能支持jQuery最精髓的地方—链式调用。return this就是让我们自己扩展的jQuery方法也支持连是调用。因为这里的this也是一个jQuery对象,所以返回它就可以接着链式调用其他方法了。

  2.3    对上述例子的完善。

     上面的例子有个不太完善的地方,调用highlight1()方法的时候,只能将匹配的元素的背景和字体颜色变成我们预先设置好的颜色,这样不好。最好是能让用户自定义他们想要的颜色,接下来我们修改一下highlight1()方法。具体方法是我们可以给方法加一个参数,让用户自己把参数用对象传进去。

 1  (function($){
 2      $.fn.highlight2= function(options){
 3          //要考虑到各种情况;
 4          //options为undefined;
 5          //options只有部分key;
 6          var bgcolor = options && options.backgroundColor || ‘#fffceb‘;
 7          var color = options && options.color || ‘#d85030‘;
 8          this.css(‘backgroundColor‘, bgcolor).css(‘color‘, color);
 9          return this;
10     }
11 })(jQuery);

    用户可以像jQuery的css()方法那样给highlight2()方法传参数,来自己制定背景和字体颜色:

1 $(selector).highlight({
2     backgroundColor:‘#ccc‘,
3     color:‘#ff0000‘
4 });

    我们也可以让用户修改默认值,用户设置默认值后再调用highlight2()方法就不用每次都传值了。

 1 (function($){
 2     $.fn.hightlight3 = function(){
 3         // 合并默认值和用户设定值:
 4         var opts = $.extend({}, $.fn.highlight.defaults, options);
 5         this.css(‘backgroundColor‘, opts.backgroundColor).css(‘color‘,
 6         opts.color);
 7         return this;
 8     }
 9
10     //设定默认值
11     $.fn.highlight3.defaults = {
12         color:"#d85030",
13         backgroundColor:"#fff8de"
14     }
15 })(jQuery)
16
17 //用户使用时,只需一次性设定默认值
18 $.fn.highlight3.defaults.color = ‘#fff‘;
19 $.fn.highlight3.defaults.backgroundColor = ‘#000‘;
20
21 //然后调用highlight3()方法就可以了,匹配元素的背景和字体颜色就都是用户自己定义的默认值了
22 $(selector).highlight3();

    这样,我们的highlight()方法就比较完美了。

    也许你注意到了,在最终版的highlight()方法中,用到了$.extend()方法,这个方法我会在下一篇博客中详细介绍。并且在下一篇博客中,我会介绍一下针对特定元素的扩展。

原文地址:https://www.cnblogs.com/xbqianduan/p/8214675.html

时间: 2024-10-11 20:31:28

编写自己的jquery插件之基础的相关文章

关于jQuery插件imgAreaSelect基础讲解

关于ImgAreaSelect,  是一jQuery插件,它支持用户通过鼠标拖曳选择图片的一部分,如图片拖曳.图片编辑等~~来具体看一下 1.先下载imgAreaSelect插件 下载地址: 英文:http://odyniec.net/projects/imgareaselect/ 中文:http://www.css88.com/EasyTools/javascript/jQueryPlugin/imgAreaSelect/index.html 在头部引用: <link rel="styl

jQuery插件学习基础

1.给jQuery添加全局的函数: $.zgz={  fn1:function(){ alert('我是刚设置的第一个全局函数') },fn2:function(){ alert('我是刚设置的第二个全局函数') } } $(function(){ $.zgz.fn1(); $.zgz.fn2(); }) 2.给jQuery添加拓展函数方法一: $.fn.zgz=function() { alert(this.length) } $(function(){ $('oDiv').zgz(); })

自己动手丰衣足食之征服jQuery插件编写

原文地址:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择.

教你开发jQuery插件(转)

原文:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择. 本教

【转】教你开发jQuery插件

阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用j

开发JQuery插件(转)

阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用j

编写jQuery插件

编写jQuery插件 在园子里有很多关于jQuery插件的文章,尤其 以下2篇文章: 不定义JQuery插件,不要说会JQuery jQuery插件开发精品教程,让你的jQuery提升一个台阶 这2位大神基础讲的很清楚,在这里就不多说了,主要那个小需求来练练: 需求说明:一个标题插件,可以通过后端取数,自定义标题,自定义样式 讨论:插件通常不都是加载一下就不操作了,比如表格插件,加载数据,刷新等等. 今天练习的控件就简单给大家理理写控件的思路,(有问题,有意见大家指出.) ; (function

使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)

使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) Note 这一章节的内容是基于 Scott Gonzalez 一篇博客 Building Stateful jQuery Plugins(已获作者许可) 虽然大多数的 jQuery 插件都是无状态的(stateless),也就是说, 与插件进行交互的就限于调用插件时的那一组对象, 但是有好大一部分功能需求没办法通过这种简单的插件模式来实现. 为了填补这一空白,jQuery UI 实现一套

第七章(插件的使用和写法)(7.6 编写 jQuery 插件)

7.6.1 插件的种类 编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护和提高开发效率. jQuery 的插件主要分为3种类型. 1 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的 jQuery 对象进行操作,是最常见的一种插件. 据不完全统计,95%以上的 jQuery 插件都是封装对象方法的插件,此类插件可以发挥出 jQuery 选择器的强大优势.有相当一部分的 jQuery 的方法,都是在 jQuery 脚本库内部通过这种