zoukankan      html  css  js  c++  java
  • jQuery插件开发jQuery.extend(object)和jQuery.fn.extend()

    jQuery插件开发

    知识1:用JQuery写插件时,最核心的方法有如下两个:

    $.extend(object) 可以理解为JQuery 添加一个静态方法。

    $.fn.extend(object) 可以理解为JQuery实例添加一个方法。

    基本的定义与调用:

    /* $.extend 定义与调用
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    $.extend({ fun1: function () { alert("执行方法一"); } });
    $.fun1();
    /*  $.fn.extend 定义与调用
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    $.fn.extend({ fun2: function () { alert("执行方法2"); } });
    $(this).fun2();
    //等同于
    $.fn.fun3 = function () { alert("执行方法三"); }
    $(this).fun3();

    知识2:jQuery(function () { }); 与  (function ($) { })(jQuery);的区别:

    jQuery(function () { });
    //相当于
    $(document).ready(function () { });
    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    (function ($) { })(jQuery);
    //相当于
    var fn = function ($) { };
    fn(jQuery);

    jQuery(function () { });是某个DOM元素加载完毕后执行方法里的代码。

    (function ($) { })(jQuery); 定义了一个匿名函数,其中jQuery代表这个匿名函数的实参。通常用在JQuery插件开发中,起到了定义插件的私有域的作用。

    http://www.cnblogs.com/xcj26/p/3345556.html

    1、类级别
    类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法。
    开发扩展其方法时使用$.extend方法,即jQuery.extend(object); 

    代码如下:

    $.extend({ 
    
    add:function(a,b){return a+b;} , 
    
    minus:function(a,b){return a-b;} 
    }); 

    页面调用如下

    var i = $.add(3,2); 
    var j = $.minus(3,2); 

    2、对象级别
    要处理DOM元素以及将插件更好地运用于所选择的元素身上,还是需要通过$.fn 向jQuery添加新的方法

    对象级别则可以理解为基于对象的拓展,如$("#table").changeColor(...); 这里这个changeColor呢,就是基于对象的拓展了。
    开发扩展其方法时使用$.fn.extend方法,即jQuery.fn.extend(object); 

    代码如下:

    $.fn.extend({ 
       check:function(){ 
          return this.each({ 
          this.checked=true; 
       }); 
      }, 
      uncheck:function(){ 
          return this.each({ 
          this.checked=false; 
        }); 
      } 
    }); 

    页面调用如下:

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

    3、扩展

    代码如下:

    $.xy = { 
    add:function(a,b){return a+b;} , 
    minus:function(a,b){return a-b;}, 
    voidMethod:function(){ alert("void"); } 
    }; 
    var i = $.xy.add(3,2); 
    var m = $.xy.minus(3,2); 
    $.xy.voidMethod(); 

    具体应用见PublicsrcfbmloveBaojsdetial.js

    提示:当我们研究大牛的代码的时候,前面经常看到有“;”,那是为了避免代码合并等不必要的错误。

    var testFunction=function(){
    
    }
    (function(){
    
    })()

    由于testFunction()这个函数后面没有加分号,导致代码出错,为了避免这类情况的发生,通常这么写!

    ;(function(){
    
    })()

    例如,有些朋友为了避免jquery和zeptojs冲突,将jquery的前缀“$”,修改为“jQuery”,还有些朋友将默认的document等方法修改。为了让你的插件在这些东西修了了的情况下照常运行,那么我们的做法是,把代码包裹在如下里面:

    ;(function($,window,document,undefined){
        //我们的代码。。
    })(jQuery,window,document);

    JQ插件标准的封装---闭包

    <script type="text/javascript">
        (function ($) {
            //这里放入插件代码
        })(jQuery);
    </script>

    这是jQuery官方的插件开发规范,这样写是作用是:
    1. 避免全局依赖。
    2. 避免第三方破坏。
    3. 兼容jQuery操作符’$’和’jQuery’

    这段代码在被解析时会形同如下代码:

    var jq = function($) {
        // Code goes here
    }; 
    jq(jQuery);
  • 相关阅读:
    CentOS 6的服务器后执行yum后发现出现Error: Cannot find a valid baseurl for repo: base解决办法
    C# 8字节byte数组转int
    Unity Packages 介绍
    开发笔记:服务端返回三/多级菜单数据的几种不同实现
    Grafana Azure Data Explorer Plug-In 中国区 ADX 支持
    Redash 连接中国区 Azure Data Explorer
    爆竹声中贺新年-- KEDA(Kubernetes Event-driven Autoscaling) 带你烟火秀
    生产随机码包含数字+字母
    关于串口通信发送组合键方法
    python 正则匹配一串字符串的负数和正数,合并两个列表为字典
  • 原文地址:https://www.cnblogs.com/qdlhj/p/10095099.html
Copyright © 2011-2022 走看看