zoukankan      html  css  js  c++  java
  • 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"
  • 相关阅读:
    python 包管理工具 pip 的配置
    Python 变量作用域 LEGB (下)—— Enclosing function locals
    Python 变量作用域 LEGB (上)—— Local,Global,Builtin
    2020 Java 面试题 小结 (答案慢慢补上,有错误请指出)
    mysql 根据日期(date)做年,月,日分组统计查询
    jvm指令
    正则表达式 分割地址 获取省市区详细地址
    .Net 异常记录
    WCF设计服务协议(一)
    plsql ORA-01789:查询块具有不正确的结果列数
  • 原文地址:https://www.cnblogs.com/blog-leo/p/3659597.html
Copyright © 2011-2022 走看看