jQuery返回的是jQuery对象,jQuery对象是一个类数组的对象,本质上它就是一个对象,但是它拥有数组的长度和下标,却没有继承数组的方法。
很显然,上面几节的讲解都是建立在一种空理论基础上的,目的是希望读者能够理解jQuery框架的核心构建过程。下面,我们就尝试为jQuery()函数传递一个参数,并让它返回一个jQuery对象。
jQuery()函数包含两个参数selector和 context,其中selector表示选择器,而context表示选择的内容范围,它表示一个DOM元素。为了简化操作,我们假设选择器的类型仅限定为标签选择器。实现的代码如下所示。
广州网站建设,网站建设,广州网页设计,广州网站设计
- <div></div>
- <div></div>
- <div></div>
- <script language="javascript" type="text/javascript">
- var $ =jQuery = function(selector, context ){ //定义类
- return new jQuery.fn.init(selector, context ); //返回选择器的实例
- }
- jQueryjQuery.fn = jQuery.prototype = { //jQuery类的原型对象
- init : function(selector, context){//定义选择器构造器
- selectorselector = selector || document; // 设置默认值为document
- contextcontext = context || document; //设置默认值为document
- if ( selector.nodeType ) { //如果选择符为节点对象
- this[0] = selector; //把参数节点传递给实例对象的数组
- this.length = 1; //并设置实例对象的length属性,定义包含的元素个数
- this.context = selector; //设置实例的属性,返
- 回选择范围
- return this; //返回当前实例
- }
- if ( typeof selector === "string" ) { //如果选择符是字符串
- var e = context.getElementsByTagName (selector); //获取指定名称的元素
- for(var i = 0;i<e.length;i++){ //遍历元素集合,并把所有元素填入到当前实例数组中
- this[i] = e[i];
- }
- this.length = e.length; //设置实例的length属性,即定义包含的元素个数
- this.context = context;//设置实例的属性,返回选择范围
- return this; //返回当前实例
- } else{
- this.length = 0; //否则,设置实例的length属性值为0
- this.context = context; //设置实例的属性,返回选择范围
- return this; //返回当前实例
- }
- },
- jquery: "1.3.2",
- size: function() {
- return this.length;
- }
- }
- jQueryjQuery.fn.init.prototype = jQuery.fn;
- alert( $("div").size() ); //返回3
- </script>
广州网站建设,网站建设,广州网页设计,广州网站设计



