jQuery是一个非常优秀的JavaScript框架,它对CSS和XPath的至此,使我们写js变得更加方便。

那么它是如何实现它的声明的呢?
1)查找(创建)jQuery对象:$('selector');
2)调用jQuery对象的方法完成我们需要完成的工作:$('selector').do();
jQuery就是以这种可以说最简单的编码逻辑来改变JavaScript编码方式的。这两个步骤是JavaScript的核心。
我们用一个简单的jQuery实例来看它是如何工作的(由于vs2008sp1中文版的jQuery智能提示环境我没调好,jQuery1.3.2用不了,就先用jQuery1.2.6)

 1jQuery学习(一)<html xmlns="http://www.w3.org/1999/xhtml">
 2jQuery学习(一)<head>
 3jQuery学习(一)    <title></title>
 4jQuery学习(一)    <script type="text/javascript" src="Scripts/jquery-1[1].2.6-vsdoc.js"></script>
 5>

需要理解的是$('selector')始终返回的是一个jQuery对象。如上面的$('a')它的含义就相当于:
var obj = document.getElementsByTagName('a');
另外一点就是jQuery总是以集合的形式工作,上面jQuery对象的hide()方法操作的是a元素的集合,而不是单个a元素。

三个问答:

  • 1)问:为什么$(selector)之后,返回的是jQuery对象?
    答:从jQuery的源代码中,我们可以知道:var $ = jQuery.因此当我们$(selector)操作时,其实就是jQuery(selector),创建的是一个jQuery对象.当然正确的写法应该是这样的:var jq = new $(selector);而jQuery使用了一个小技巧在外部避免了new,在jquery方法内部:if ( window == this ) return new jQuery(selector);
  • 2)问:为什么创建一个jQuery对象之后,我们可以这样写$(selector).each(function(index){...});进行遍历操作呢?
    答:其实jQuery(selector)方法调用时,在jQuery(selector)方法内部,最后返回的是一个数组:return this.setArray(a);而each方法体内部是一个for循环,在循环体内是这样调用的:method.call(this[ i],i).
  • 3)问:为什么jQuery能做到jQuery对象属性/方法/事件的插件式扩展?
    答:如果您有一些javasciprt的面向对象方面的知识,就会知道,jQuery.prototype原型对象上的扩展属性/方法和事件,将会给jQuery的对象"扩展".基于这一点,jQuery是这样写的:jQuery.fn = jQuery.prototype.
     1jQuery学习(一)//所以,当我们扩展一个插件功能时,如下:
     2

         综上所述,jQuery给我们带来了一个简洁方便的编码模型(创建jQuery对象;直接使用jQuery对象的属性/方法/事件),一个强悍的dom元素查找器($),插件式编程接口(jQuery.fn),以及插件初始化的"配置"对象思想。

下面看一个简单的jQuery收缩实例

 1jQuery学习(一)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2jQuery学习(一)
 3jQuery学习(一)<html xmlns="http://www.w3.org/1999/xhtml">
 4jQuery学习(一)<head>
 5jQuery学习(一)    <title></title>
 6

(本人写的有什么不对的地方,请大家指正,一起探讨,谢谢)

相关文章: