JQuery插件开发 - 模板

 1 (function($) {
 2     $.fn.PluginName = function(options) {
 3         // 创建一个默认设置对象
 4         var defaults = {
 5             key : "DefaultValue"
 6         }
 7         //使用extend方法从options和defaults对象中构造出一个新的设置对象
 8         var options = $.extend(defaults, options);
 9         /****************
10              执行代码
11         ****************/
12     };
13 })(jQuery);
 //调用自定义的JQuery插件
 $(".className").PluginName({key:"NewValue"});

 


 

var options = $.extend(defaults, options);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
Object.extend = function(destination, source) { // 一个静态方法表示继承, 目标对象将拥有源对象的所有属性和方法
  for (var property in source) {
      destination[property] = source[property];// 利用动态语言的特性, 通过赋值动态添加属性与方法
  }
  return destination;// 返回扩展后的对象
}

 


 

 

 1 (function($) {
 2     var methods = {
 3         init : function(options) {
 4             // 创建一个默认设置对象
 5             var defaults = {
 6                 key : "DefaultValue"
 7             }
 8             //使用extend方法从options和defaults对象中构造出一个新的设置对象
 9             var options = $.extend(defaults, options);
10             /***************
11                  执行代码
12             ***************/
13             
14         }
15     };
16     $.fn.PluginName = function(options) {
17         //获取传入的第一个实参副本(arguments对象是收到的实参副本,就像数组,但却又不是数组)
18         var method = arguments[0];
19         //获取我们的方法
20         if (methods[method]) {
21             //如果方法存在,存储起来以便使用
22             method = methods[method];
23             //如果方法不存在,检验对象是否为一个对象(JSON对象)或者method方法没有被传入
24             arguments = Array.prototype.slice.call(arguments, 1);
25         } else if ( typeof (method) == 'object' || !method) {
26             //如果我们传入的是一个对象参数,或者根本没有参数,init方法会被调用
27             method = methods.init;
28         } else {
29             //如果方法不存在或者参数没传入,则报出错误。需要调用的方法没有被正确调用
30             $.error('Method ' + method + ' does not exist on jQuery.ChangeTabs');
31             return this;
32         }
33         //调用我们选中的方法
34         return method.apply(this, arguments);
35     };
36 })(jQuery);
$('.className').pluginName('init', 'argument'); // 调用:把 "argument 1" 和 "argument 2" 传入 "init"

 

posted @ 2014-04-11 21:31  Mr.Leo  阅读(283)  评论(0编辑  收藏  举报