• 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"
  • 相关阅读:
    关于连通性问题的Tarjan算法暂结
    【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
    Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
    【NOIP模拟赛】Drink 二维链表+模拟
    【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
    【BZOJ 4198】[Noi2015]荷马史诗 哈夫曼编码
    【NOIP模拟赛】chess 建图+spfa统计方案数
    【TMD模拟赛】上低音号 链表
    【TMD模拟赛】黄金拼图 Cao
    【BZOJ 4007】[JLOI2015]战争调度 DP+搜索+状压
  • 原文地址:https://www.cnblogs.com/blog-leo/p/3659597.html
Copyright © 2020-2023  润新知