`
zhouxianglh
  • 浏览: 267433 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jQuery1.4.1 代码分析(1核心函数)

阅读更多

学习一段时间了,算是总结一下吧.有部分暂时不能完全看明白.用"?"标出

/*
 * jQuery1.4.1 代码分析 isw2 zhoux
 */
//jQuery 核心函数
(function( window, undefined ) {
	var jQuery = function( selector, context ) {// jQuery 的构造方法(初始化过程调用4次)
		return new jQuery.fn.init( selector, context );// 调用init 方法
	};
	jQuery.fn = jQuery.prototype = {// 这里声明jQuery.fn 是jQuery.prototype 的简写
		init: function( selector, context ) {
			if ( !selector ) {// jQuery(),$():返回空jQuery 对象
				return this;
			}
			if ( selector.nodeType ) {// jQuery(elements),$(elements):调用将DOM元素转化为jQuery对象。
				this.context = this[0] = selector;
				this.length = 1;
				return this;
			}
			if ( typeof selector === "string" ) {// 这里注意==(等于,比较时会转型)和===(完全等于,比较时不会转型)的区别
				match = quickExpr.exec( selector );//匹配/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, match[1]即<[\w\W]+>)  为HTML 字符串
				if ( match && (match[1] || !context) ) {
					if ( match[1] ) {//如果是HTML 
						doc = (context ? context.ownerDocument || context : document);
						ret = rsingleTag.exec( selector );//匹配/^<(\w+)\s*\/?>(?:<\/\1>)?$/
						if ( ret ) {
							if ( jQuery.isPlainObject( context ) ) {//jQuery(html, props):创建由 jQuery 对象包装的 DOM 元素。同时设置属性、事件等。
								selector = [ document.createElement( ret[1] ) ];//使用document创建元素
								jQuery.fn.attr.call( selector, context, true );//设置元素属性(props)
							} else {
								selector = [ doc.createElement( ret[1] ) ];//使用指定context创建元素
							}
						} else {//?
							ret = buildFragment( [ match[1] ], [ doc ] );
							selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
						}
					}else{//#id
						elem = document.getElementById( match[2] );//根据id 查找元素
						if ( elem ) {
							if ( elem.id !== match[2] ) {//如果element id 和查询不一致
								return rootjQuery.find( selector );//rootjQuery = jQuery(document),这里相当于$(document).find(selector)
							}
							//包含当前元素
							this.length = 1;
							this[0] = elem;
						}
						this.context = document;
						this.selector = selector;
						return this;
					}
				} else if ( !context && /^\w+$/.test( selector ) ) {//根据tagName 查找
					this.selector = selector;
					this.context = document;
					selector = document.getElementsByTagName( selector );
				} else if ( !context || context.jquery ) {//用于$(expr, $(...)),即context 为jQuery对象
					return (context || rootjQuery).find( selector );
				} else {//jQuery(expression, [context]):这个函数接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素。
					return jQuery( context ).find( selector );
				}
			} else if ( jQuery.isFunction( selector ) ) {
				return rootjQuery.ready( selector );// jQuery(callback),$(callback):$(document).ready()的简写
			}
			if (selector.selector !== undefined) {// ?
				this.selector = selector.selector;
				this.context = selector.context;
			}
			return jQuery.isArray( selector ) ?// ?
				this.setArray( selector ) :
				jQuery.makeArray( selector, this );
		}
	}
	window.jQuery = window.$ = jQuery;// 这里声明window.jQuery ,window.$为jQuery的简写
})(window);// 这里类似于一个初始化方法的声明,页面加载后执行
分享到:
评论
17 楼 fxsc 2010-08-09  
62. 应该是传入的如果是jquery对象,则把this指向传入的对象
66. 应该是传入一组dom对象
16 楼 一醉而过 2010-07-14  
看源码有点难度! 好好学习JS,不过高手都去看源码了~
15 楼 MrPengPeng 2010-07-13  
楼主 太刻苦了 !注释 都写的 很详细 !谢谢了!!下载看看 !分享  一下
14 楼 yangzelin_job09 2010-07-13  
楼主分析的还是很详细的,非常适合不想自己分析代码的人。
13 楼 yining159 2010-07-12  
=。=竟然连谢都不可以。。。 收藏下 楼主辛苦
12 楼 rmn190 2010-07-12  
8错, 赞一下!
11 楼 monsterjiao 2010-07-12  
感谢分享。
10 楼 congdepeng 2010-07-12  
js提供了mechanism 而jQuery提供了policy
9 楼 caowei3047 2010-07-12  
不错的资料
8 楼 jsj_064 2010-07-12  
看源码还是很有难度的,顶楼主
7 楼 forgood 2010-07-11  
谢谢ls的分享,我正在学习jquery。。。。。。
6 楼 forgood 2010-07-11  
使用比较容易,但是想搞懂源码还是需要下功夫的。
5 楼 foohsinglong 2010-07-10  
JQuery本来就是JS框架......核心也就是把JS简化而已...
4 楼 tou3921 2010-07-10  
js基础不够,跟lz学学
3 楼 fengjidao 2010-07-09  
不错,赞一个
2 楼 yolio2003 2010-07-09  
下了 慢慢看  感谢分享
1 楼 albinhdk 2010-07-09  
楼主的无私奉献值得赞扬。
学习楼主的专研精神!

相关推荐

    JQuery1.4.1

    - **jquery-1.4.1.js**: 这是未压缩的完整版jQuery库,便于开发者阅读和调试代码。 - **jquery-1.4.1.min.js**: 这是经过压缩的版本,通过删除空格、注释和简化变量名来减小文件大小,提高页面加载速度,适合生产...

    jQuery 1.4.1 中文版参考

    通过《jQuery 1.4.1 中文版参考》的详细学习,开发者能够掌握这个版本的jQuery核心功能,从而在实际项目中更灵活、高效地编写代码。而提供的`jQueryAPI-100203.chm`文件很可能是jQuery 1.4.1的API参考手册,包含了...

    jquery1.4.1使用手册

    以下是基于jQuery 1.4.1版本的一些核心知识点: 1. **选择器**:jQuery的选择器是其强大之处,允许开发者使用CSS1、CSS2甚至CSS3的选择器来选取DOM元素。例如,`$("#id")`选取ID为指定值的元素,`$(".class")`选取...

    jquery1.4.1

    `jQuery1.4.1.chm`是一个帮助文档,以CHM(Compiled HTML Help)格式存在,通常包含详细的API参考、示例和教程。对于开发者来说,这是一个非常宝贵的资源,可以方便地查找函数用法、参数说明和注意事项。在1.4.1版本...

    JQuery1.4.1, UI ,JS ,中文API文档

    在jQuery 1.4.1中,JavaScript的DOM操作变得更加简单,通过链式调用、选择器语法和便利的函数,大大提高了开发效率。 **中文API文档** 对于学习和使用jQuery 1.4.1和jQuery UI 1.8.2至关重要。`jQueryAPI-100214....

    jQuery1.4.1 API 中文参考手册

    《jQuery1.4.1 API 中文参考手册》是一份为开发者提供的详尽指南,它涵盖了jQuery库在1.4.1版本中的各种函数、方法和事件,是快速理解和使用jQuery的强大工具。这份手册通常以CHM(Compiled Help Manual)格式提供,...

    JQuery1.4.1API.CHM以及对应函数库

    在jQuery1.4.1 API中,你可以找到关于以下核心概念和函数的详细说明: 1. **选择器(Selectors)**:jQuery的选择器基于CSS,允许你根据元素的ID、类、属性等快速定位DOM元素。例如,`$("#myID")`会选择ID为"myID...

    jQuery 1.4.1 中文参考

    在jQuery 1.4.1版本中,这个库提供了丰富的API,使得开发者能够更高效地编写JavaScript代码。 **核心功能** jQuery的核心在于选择、操作DOM元素以及处理事件。以下是一些关键的核心函数: - `jQuery(expression, ...

    jquery1.4.1中文开发手册

    总的来说,《jQuery 1.4.1 中文开发手册》是学习和使用jQuery不可或缺的参考资料,它涵盖了选择器、DOM操作、事件处理、Ajax、动画效果以及各种辅助函数等多个方面,帮助开发者快速掌握并应用jQuery,实现高效、简洁...

    JQuery 1.4.1开发包

    1. **JQuery核心库**:`jquery-1.4.1.js`是核心的JQuery库文件,包含了完整的JQuery功能,允许开发者通过简洁的API进行DOM操作、事件处理、动画制作和Ajax请求。 2. **压缩与优化**:`jquery-1.4.1.min.js`是经过...

    jQuery 1.4.1 速查表 jQueryAPI

    **jQuery 1.4.1 速查表与jQuery API** jQuery 是一款高效、简洁的JavaScript库,它极大地简化了JavaScript编程,特别是DOM操作、事件处理、动画制作以及Ajax交互。jQuery 1.4.1 是该库的一个早期版本,尽管现在已经...

    jQuery1.4.1.chm

    总的来说,《jQuery1.4.1.chm》文档是学习和使用jQuery 1.4.1版本的重要资源,它覆盖了所有核心功能和用法,无论你是初学者还是经验丰富的开发者,都能从中受益。通过深入学习和实践,你可以掌握这个强大的工具,...

    JQuery1.4.1中文参考离线手册

    总之,jQuery 1.4.1中文参考离线手册是一个宝贵的资源,它覆盖了jQuery的核心功能和常用API,对于开发者来说,无论是在没有网络的情况下学习,还是在实际项目中快速查找函数用法,都是非常实用的工具。通过深入理解...

    jQuery api 1.4.1

    1. **选择器**:jQuery的核心在于其强大的CSS选择器,它支持标准的CSS1到CSS3选择器,如`#id`(ID选择器)、`.class`(类选择器)以及`tag`(标签选择器)。此外,还有`:first`、`:last`、`:even`、`:odd`等伪类选择...

    jquery 1.4.1 vsdoc 简体中文

    1. `jquery-1.4.1.min-vsdoc.js`:这是jQuery 1.4.1的最小化版本,并且包含了VSdoc注释。VSdoc是Visual Studio的一种文档格式,它允许开发者在Visual Studio中查看jQuery函数的详细说明,便于理解和使用。 2. `...

    JQuery1.4.1与JQuery1.8.3

    1. **API 稳定性**:到了 1.8.x 系列,jQuery API 已经相当稳定,大部分核心功能都已成熟,开发者可以依赖这些API进行长期的项目开发。 2. **事件处理的改变**:虽然 `live()` 方法在 1.7 版本被废弃,但 1.8.3 ...

    jQuery 1.4.1 官方中文参考文档 CHM 版 2010-02-14

    1. **选择器**: jQuery的核心功能之一就是其强大的CSS选择器,它允许开发者通过简单的语法选择DOM元素。例如,`$("#id")`选择ID为指定值的元素,`$(".class")`选择所有类名为指定值的元素。在1.4.1版本中,这些选择...

    jquery1.4.1简体中文提示

    3. `jquery-1.4.1.js`:这是未压缩的jQuery核心库文件,包含了完整的源代码,便于开发者查看和学习jQuery的内部实现。 4. `jquery-1.4.1.min.js`:这是jQuery 1.4.1的最小化版本,不包含VSdoc注释,适用于实际网站...

Global site tag (gtag.js) - Google Analytics