`
AngelAndAngel
  • 浏览: 236971 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jquery 源码初探,一步步实现自己的jquery(四)

阅读更多
    jQuery的扩展有两种,全局(和java中类方法,类属性一样),对象。
  

       
  • 全局函数的表现形式是:$.message()等
  •    
  • 而对象扩展的形式是:$("#input2").add(1,2)等
  •   


   首先呢我们建立一个jquery-extend-1.4.2.js的文件,表示将要扩展jquery1.4.2, 然后建立一个网页进行测试,网页中要导入jquery1.4.2和这个将要扩展的文件。

  1,刚才说了,jQuery有两种扩展形式,我们先来看第一种:
  
       //one:直接加
      jQuery.bar = function(param) {    
             alert('直接加方法bar,参数是 "' + param + '".');   
     };     
       //调用:
      $.bar('afei') 
       //two:使用扩展
             jQuery.extend({
	   foo1:function(){alert("加扩展方法 foo1");},
	   bar1:function(param){alert("加扩展方法 foo1bar1,参数
              是"+param);}

          });
      //调用
        $.bar1("afei-1");

       //three,使用命名空间
         jQuery.afeiPlugin = {           
           foo3:function() {           
           alert('自定应命名空间,加方法foo3');           
       },           
       bar3:function(param) {           
          alert('自定应命名空间,加方法bar3,参数是 "' + param + '".');     
      }          
     };       
     //调用
      $.afeiPlugin.bar3("我是阿飞"); 
     //使用命名空间的这个其实蛮常用的,比如我们用的jquery.messager.js这个插件 
      //的这些方法 比如$.messager.show("我是消息")就是这样的。

   


  2,对象级别的插件开发,代码如下
    //形式1
    (function($){      
      $.fn.extend({      
      test1:function(opt,callback){      
       alert(opt+" : "+callback);      
     }      
     })      
    })(jQuery); 

     //形式2
     (function($) {        
      $.fn.test2 = function(opt,callback) {      
      alert(opt+" : "+callback);
    };      
    })(jQuery);

    //调用
    $("#input2").test2(3,4);

   这个扩展的形参是$,最后在完成的时候传入jQuery对象,那么在插件里面也可以用$来操作query了。

   上面两种扩展方式比较简单,可以完成基本的扩展 ,下面给出一个完整的例子。
   // 创建一个闭包     
(function($) {     
  // 插件的定义     
  $.fn.hilight = function(options) {     
    debug(this);     
    // build main options before element iteration     
    var opts = $.extend({}, $.fn.hilight.defaults, options);     
    // iterate and reformat each matched element     
    return this.each(function() {     
      $this = $(this);     
      // build element specific options     
      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;     
      // update element styles     
      $this.css({     
        backgroundColor: o.background,     
        color: o.foreground     
      });     
      var markup = $this.html();     
      // call our format function     
      markup = $.fn.hilight.format(markup);     
      $this.html(markup);     
    });     
  };     
  // 私有函数:debugging     
  function debug($obj) {     
    if (window.console && window.console.log)     
      window.console.log('hilight selection count: ' + $obj.size());     
  };     
  // 定义暴露format函数     
  $.fn.hilight.format = function(txt) {     
    return '<strong>' + txt + '</strong>';     
  };     
  // 插件的defaults     
  $.fn.hilight.defaults = {     
    foreground: 'red',     
    background: 'yellow'     
  };     
// 闭包结束     
})(jQuery);     


总结一下:
  1,jQuery为开发插件提拱了两个方法,分别是:
   jQuery.fn.extend(object);  给jQuery对象添加方法。
   jQuery.extend(object);  为扩展jQuery类本身.为类添加新的方法

  2,其中jQuery.fn.extend(object)使我们编写插件功能时常用的。
比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:

$.fn.extend({        

     alertValue:function(){       

         $(this).click(function(){      

              alert($(this).val());       

          });       

      }       

});
然后$("test1").alertValue();这样,在点击进入时,可弹出表单元素的值。
下面带附件

   
分享到:
评论

相关推荐

    ApiCloud 2048 H5版源码

    在ApiCloud中开发H5版2048,首先需要创建一个项目,然后引入必要的前端库,如jQuery或其他轻量级框架,用于处理DOM操作和事件监听。接着,你需要设计一个数据结构来存储棋盘状态,通常是一个二维数组。游戏逻辑通过...

    加密网页数据获取初探.pdf

    二是网页源代码中的两个Java Script(一种具有函数优先的轻量级,解释型或即时编译型的编程语言)文件:jquery.min.js、dealq8ZH16HCv.min.js(以下分别简称J1、J2文件)。 J1主要是解密、解码等内容,例如J1文件...

    javaeye热点阅读

    15. Apache Click框架初探:Click是一个轻量级的Web开发框架,它的易用性和简洁性使得快速构建应用变得可能。 16. Spring AOP详解:AOP(面向切面编程)是Spring的重要特性,用于实现如日志、权限检查等功能的横切...

    JEECG_v3开发指南v3.2.pdf

    - 随着WEBUI框架(如EasyUI、JqueryUI、Ext、DWZ等)的成熟发展,系统界面实现了统一化,这使得代码生成器可以生成具有统一规范的界面。 - 当前的趋势是采用代码生成加上手工MERGE的半智能化开发方式,这种方式...

    JEECG_v3开发指南v3.3

    - **技术背景**:本指南的编写背景是基于当前Web UI框架(如EasyUI、JqueryUI、Ext、DWZ)的成熟度以及它们在统一系统界面方面的应用。随着这些框架的不断发展和完善,代码生成器能够生成更为规范且统一的界面代码,...

    PokemonPokedex

    《神奇宝贝图鉴项目:JavaScript实现的初探》 神奇宝贝图鉴,即"Pokedex",是《神奇宝贝》系列游戏中一个重要的元素,它记录了各种神奇宝贝的信息,包括属性、技能、进化链等。本项目名为"PokemonPokedex",主要...

Global site tag (gtag.js) - Google Analytics