`
AngelAndAngel
  • 浏览: 234892 次
  • 性别: 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();这样,在点击进入时,可弹出表单元素的值。
下面带附件

   
分享到:
评论

相关推荐

    jQuery源码 jQuery源码 jQuery源码

    jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码...

    JQuery源码详细中文注释_Jquery源码分析_

    1. 选择器:jQuery的核心之一是它的CSS选择器,如$("#id")、$(".class")等,这些选择器基于Sizzle引擎实现,能够高效地定位DOM元素。 2. 链式调用:jQuery对象返回的是一个包含多个DOM元素的集合,可以连续调用方法...

    Jquery源码分析 源码

    《jQuery源码分析》 jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。深入理解其源码对于...同时,理解源码也能帮助我们更好地利用jQuery,甚至定制自己的工具库。

    jQuery源码分析系列.pdf

    - **源码结构和核心函数**:详细介绍jQuery对象的创建过程,包括`$`或`jQuery`函数的内部实现,以及如何利用这些核心函数来构建和操作DOM元素。 - **工具函数**:剖析jQuery中用于辅助开发的核心工具函数,如选择器...

    jquery源码,3.7.0版本

    jquery源码,3.7.0版本

    Head First jQuery源码

    通过源码,我们可以学习如何构建自己的jQuery插件,以及如何利用`$.fn.extend()`方法。 在学习《Head First jQuery》的源码时,你可以逐个研究这些关键功能的实现,同时结合书中的解释,深入理解jQuery的工作原理。...

    Head First jquery源码

    《Head First jQuery源码》是一本深入解析jQuery库的书籍,其内容主要涵盖了jQuery的核心功能、设计理念以及实现机制。jQuery是JavaScript的一个库,它极大地简化了网页中的DOM操作、事件处理、动画效果以及Ajax交互...

    jquery源码框架解读

    在前端开发领域,jQuery是一个不可或缺的库,它极大地简化了JavaScript操作DOM、处理事件、创建动画以及实现Ajax交互。这份资料深入解析了jQuery的源码,旨在帮助开发者理解其内部机制,提升技能水平。 jQuery的...

    jQuery源码+中文详细注解

    这部分使用了一个立即执行的匿名函数来包裹整个jQuery源码,这样做的目的是形成一个闭包,保护内部的变量不被外部干扰,同时也避免了命名冲突的问题。 ##### 4. 关键字保护 ```javascript var _jQuery = window....

    jquery源码分析

    jquery源码分析,包括入口技术,选择器入口,以及在选择器使用的时候需要注意的优化思路

    jquery api, jquery ui api, jquery源码分析

    jQuery 是一款广泛使用的 JavaScript 库,它的出现极大地简化了网页的 DOM 操作、事件处理、动画效果和Ajax交互。标题中提到的"jQuery API"指的是jQuery提供的各种函数和方法,这些API允许开发者高效地操控网页元素...

    jQuery源码分析视频教程

    jQuery源码分析视频教程总计116课,按照jquery每个区段实现的内容,精确地讲解源码中是怎么实现我们开发中用到的jquery得方法的

    jQuery源码解读

    理解 jQuery 源码有助于我们更好地利用这个库,解决实际问题,甚至定制自己的版本。通过学习源码,你可以了解到如何高效地操作 DOM,如何优雅地处理事件,以及如何编写高性能的 JavaScript 代码。这将极大地提升你的...

    jquery 源码分析

    《jQuery源码分析详解》 ...通过对源码的阅读和理解,我们可以更好地运用jQuery,甚至可以为自己的项目编写高性能的插件。无论你是前端开发者还是JavaScript爱好者,理解jQuery源码都将对你的技能提升大有裨益。

    jquery源码(1.4)

    jquery最新源码jquery最新源码jquery最新源码

    jquery源码好不容易找到的与大家分享

    总结,jQuery源码的深度探索是一次宝贵的编程之旅,它让我们看到了一个优秀JavaScript库的设计思想和实现技巧。无论你是初学者还是经验丰富的开发者,深入理解jQuery,都将对你的职业生涯产生深远影响。

    锋利的jQuery 源码

    《锋利的jQuery源码》是一本专注于深入解析jQuery库源码的专业书籍,旨在帮助开发者理解并掌握jQuery的核心原理和实现机制。jQuery是JavaScript库中的一个里程碑,它极大地简化了DOM操作、事件处理、动画效果以及...

    jQuery源码详细分析中文注释

    《jQuery源码详细分析中文注释》是一份深入解析jQuery库源码的宝贵资源,它为开发者提供了理解这个广泛使用的JavaScript库内部工作机制的机会。jQuery以其简洁的API和强大的功能深受前端开发者的喜爱,但其背后的...

Global site tag (gtag.js) - Google Analytics