制作jQuery插件

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hulefei29/archive/2009/02/03/3859825.aspx

 

写一个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.

 

1、为你的插件取一个名字,在这个例子里面我们叫它"foobar".
2、创建一个像这样的文件:jquery.[yourpluginname].js,比如我们创建一个jquery.foobar.js
3、创建一个或更多的插件方法,使用继承jQuery对象的方式,如:
     jQuery.fn.foobar = function() { 

          // do something

     };

4、可选的:创建一个用于帮助说明的函数,如: 
     jQuery.fooBar = { 

          height: 5, 

          calculateBar = function() { ... }, 

          checkDependencies = function() { ... }

     };

     你现在可以在你的插件中使用这些帮助函数了:

     jQuery.fn.foobar = function() { 

          // do something 

          jQuery.foobar.checkDependencies(value); 

          // do something else

     };

     可选的l:创建一个默认的初始参数配置,这些配置也可以由用户自行设定,如: 
     jQuery.fn.foobar = function(options) { 

          var settings = {  value: 5,  name: "pete",  bar: 655 }; 

          if(options) {  

               jQuery.extend(settings, options); }

          };

     现在可以无需做任何配置地使用插件了,默认的参数在此时生效:

     $("...").foobar();

     或者加入这些参数定义:

     $("...").foobar({ value: 123, bar: 9});

     如果你release你的插件, 你还应该提供一些例子和文档,大部分的插件都具备这些良好的参考文档.

     现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自己的插件.

     很多人试着控制所有的radio或者checkbox是否被选中,比如:

     $("input[@type='checkbox']").each(function() { 

          this.checked = true; // or, to uncheck 

          this.checked = false; // or, to toggle 

          this.checked = !this.checked;

     });

     无论何时候,当你的代码出现each时,你应该重写上面的代码来构造一个插件,很直接地:

     $.fn.check = function() { 

          return this.each(function() {  

               this.checked = true; 

          });

     };

     这个插件现在可以这样用:

     $("input[@type='checkbox']").check();

     现在你应该还可以写出uncheck()和toggleCheck()了.但是先停一下,让我们的插件接收一些参数.

     $.fn.check = function(mode) { 

          var mode = mode || 'on'; // if mode is undefined, use 'on' as default 

          return this.each(function() {  

               switch(mode) {  

                    case 'on':   

                         this.checked = true;   

                         break;  

                   case 'off':   

                         this.checked = false;   

                         break;  

                   case 'toggle':   

                         this.checked = !this.checked;   

                         break;  

              } 

          });

      };

      这里我们设置了默认的参数,所以将"on"参数省略也是可以的,当然也可以加上"on","off", 或 "toggle",如:

      $("input[@type='checkbox']").check();

      $("input[@type='checkbox']").check('on');

      $("input[@type='checkbox']").check('off');

      $("input[@type='checkbox']").check('toggle');

      如果有多于一个的参数设置会稍稍有点复杂,在使用时如果只想设置第二个参数,则要在第一个参数位置写入null.

      从上一章的tablesorter插件用法我们可以看到,既可以省略所有参数来使用或者通过一个 key/value 对来重新设置每个参数.

作为一个练习,你可以试着将 第四章 的功能重写为一个插件.这个插件的骨架应该是像这样的:

      $.fn.rateMe = function(options) { 

            var container = this; // instead of selecting a static container with

            $("#rating"), we now use the jQuery context  

            var settings = {  

                  url: "rate.php"  // put more defaults here  // remember to put a comma (",") after each pair, but not after the last one! };  

                  if(options) { // check if options are present before extending the settings  

                  $.extend(settings, options); }  // ... // rest of the code // ...  return this; // if possible, return "this" to not break the chain

      });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值