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);// 这里类似于一个初始化方法的声明,页面加载后执行
...... ........目录.......................... 1. 速查表 10 2. 核心 17 2.1 jQuery 核心函数 17 2.1.1 jQuery(expression, [context]) 17 2.1.2 jQuery(html, [ownerDocument]) 18 2.1.3 jQuery(html, props) 19 2.1.4 jQuery(elements) 20 2.1.5 jQuery() 20 2.1.6 jQuery(callback) 21 2.2 jQuery 对象访问 22 2.2.1 each(callback) 22 2.2.2 size() 23 2.2.3 length 24 2.2.4 selector 24 2.2.5 context 25 2.2.6 get() 25 2.2.7 get(index) 25 2.2.8 index([subject]) 26 2.3 数据缓存 27 2.3.1 data([name]) 27 2.3.2 data(name, value) 28 2.3.3 data(obj) 29 2.3.4 removeData(name) 29 2.3.5 jQuery.data(element, key, value) 29 2.3.6 jQuery.data([element], [key]) 30 2.4 队列控制 30 2.4.1 queue(name) 30 2.4.2 queue(name, callback) 31 2.4.3 queue(name, queue) 32 2.4.4 dequeue(name) 33 2.4.5 clearQueue([queueName]) 34 2.5 插件机制 34 2.5.1 jQuery.fn.extend(object) 34 2.5.2 jQuery.extend(object) 35 2.6 多库共存 35 2.6.1 jQuery.noConflict() 35 2.6.2 jQuery.noConflict(extreme) 36 3. 选择器 37 3.1 基本 37 3.1.1 #id 37 3.1.2 element 38 3.1.3 .class 38 3.1.4 * 39 3.1.5 selector1,selector2,selectorN 39 3.2 层级 40 3.2.1 ancestor descendant 40 3.2.2 41 3.2.3 prev + next 41 3.2.4 prev ~ siblings 42 3.3 基本 43 3.3.1 :first 43 3.3.2 :last 43 3.3.3 :not 43 3.3.4 :even 43 3.3.5 :odd 44 3.3.6 :eq 44 3.3.7 :gt 45 3.3.8 :lt 45 3.3.9 :header 46 3.3.10 :animated 46 3.4 内容 47 3.4.1 :contains 47 3.4.2 :empty 47 3.4.3 :has 48 3.4.4 :parent 48 3.5 可见性 48 3.5.1 :hidden 48 3.5.2 :visible 49 3.6 属性 50 3.6.1 [attribute] 50 3.6.2 [attribute=value] 50 3.6.3 [attribute!=value] 50 3.6.4 [attribute^=value] 51 3.6.5 [attribute$=value] 52 3.6.6 [attribute*=value] 52 3.6.7 [selector1][selector2][selectorN] 52 3.7 子元素 53 3.7.1 :nth-child 53 3.7.2 :first-child 54 3.7.3 :last-child 55 3.7.4 :only-child 55 3.8 表单 56 3.8.1 :input 56 3.8.2 :text 57 3.8.3 :password 57 3.8.4 :radio 57 3.8.5 :checkbox 58 3.8.6 :submit 58 3.8.7 :image 58 3.8.8 :reset 58 3.8.9 :button 58 3.8.10 :file 59 3.8.11 :hidden 59 3.9 表单对象属性 60 3.9.1 :enabled 60 3.9.2 :disabled 60 3.9.3 :checked 61 3.9.4 :selected 61 4. 属性 62 4.1 属性 62 4.1.1 attr(name) 62 4.1.2 attr(properties) 62 4.1.3 attr(key, value) 63 4.1.4 attr(key, function(index, attr)) 63 4.1.5 removeAttr(name) 64 4.2 CSS 类 64 4.2.1 addClass(class) 64 4.2.2 addClass(function(index, class)) 65 4.2.3 removeClass([class]) 65 4.2.4 removeClass(function(index, class)) 66 4.2.5 toggleClass(class) 66 4.2.6 toggleClass(class, switch) 67 4.2.7 toggleClass(function(index, class), [switch]) 67 4.3 HTML代码 68 4.3.1 html() 68 4.3.2 html(val) 68 4.3.3 html(function(index, html)) 68 4.4 文本 69 4.4.1 text() 69 4.4.2 text(val) 69 4.4.3 text(function(index, text)) 69 4.5 值 69 4.5.1 val() 69 4.5.2 val(val) 70 4.5.3 val(array) 71 4.5.4 val(function(index, value)) 71 5. 筛选 72 5.1 过滤 72 5.1.1 eq(index) 72 5.1.2 first() 73 5.1.3 last() 73 5.1.4 hasClass(class) 73 5.1.5 filter(expr) 73 5.1.6 filter(fn) 74 5.1.7 is(expr) 75 5.1.8 map(callback) 75 5.1.9 has(expr) 76 5.1.10 not(expr) 77 5.1.11 slice(start, [end]) 77 5.2 查找 79 5.2.1 children([expr]) 79 5.2.2 closest(expr, [context]) 79 5.2.3 find(expr) 81 5.2.4 next([expr]) 81 5.2.5 nextAll([expr]) 82 5.2.6 nextUntil([expr]) 82 5.2.7 offsetParent() 83 5.2.8 parent([expr]) 84 5.2.9 parents([expr]) 84 5.2.10 parentsUntil([expr]) 85 5.2.11 prev([expr]) 86 5.2.12 prevAll([expr]) 86 5.2.13 prevUntil([expr]) 87 5.2.14 siblings([expr]) 88 5.3 串联 88 5.3.1 add(expr, [context]) 88 5.3.2 andSelf() 90 5.3.3 contents() 90 5.3.4 end() 91 6. 文档处理 91 6.1 内部插入 91 6.1.1 append(content) 91 6.1.2 append(function(index, html)) 92 6.1.3 appendTo(content) 92 6.1.4 prepend(content) 93 6.1.5 prepend(function(index, html)) 94 6.1.6 prependTo(content) 94 6.2 外部插入 95 6.2.1 after(content) 95 6.2.2 after(function) 95 6.2.3 before(content) 96 6.2.4 before(function) 96 6.2.5 insertAfter(content) 97 6.2.6 insertBefore(content) 97 6.3 包裹 98 6.3.1 wrap(html) 98 6.3.2 wrap(elem) 99 6.3.3 wrap(fn) 99 6.3.4 unwrap() 100 6.3.5 wrapAll(html) 100 6.3.6 wrapAll(elem) 101 6.3.7 wrapInner(html) 101 6.3.8 wrapInner(elem) 102 6.3.9 wrapInner(fn) 102 6.4 替换 103 6.4.1 replaceWith(content) 103 6.4.2 replaceAll(selector) 104 6.5 删除 104 6.5.1 empty() 104 6.5.2 remove([expr]) 105 6.5.3 detach([expr]) 106 6.6 复制 106 6.6.1 clone() 106 6.6.2 clone(true) 107 7. CSS 107 7.1 CSS 107 7.1.1 css(name) 107 7.1.2 css(properties) 108 7.1.3 css(name, value) 108 7.1.4 css(name, function(index, value)) 109 7.2 位置 110 7.2.1 offset() 110 7.2.2 offset(coordinates) 110 7.2.3 position() 111 7.2.4 scrollTop() 111 7.2.5 scrollTop(val) 111 7.2.6 scrollLeft() 112 7.2.7 scrollLeft(val) 112 7.3 尺寸 113 7.3.1 height() 113 7.3.2 height(val) 113 7.3.3 width() 114 7.3.4 width(val) 114 7.3.5 innerHeight() 114 7.3.6 innerWidth() 115 7.3.7 outerHeight(options) 115 7.3.8 outerWidth(options) 116 8. 事件 116 8.1 页面载入 116 8.1.1 ready(fn) 116 8.2 事件处理 117 8.2.1 bind(type, [data], fn) 117 8.2.2 one(type, [data], fn) 122 8.2.3 trigger(type, [data]) 123 8.2.4 triggerHandler(type, [data]) 124 8.2.5 unbind([type], [fn]) 125 8.3 事件委派 127 8.3.1 live(type, [data], fn) 127 8.3.2 die([type], [fn]) 130 8.4 事件切换 131 8.4.1 hover(over, out) 131 8.4.2 toggle(fn, fn2, [fn3, fn4, ...]) 131 8.5 事件 133 8.5.1 blur() 133 8.5.2 blur(fn) 133 8.5.3 change() 134 8.5.4 change(fn) 134 8.5.5 click() 134 8.5.6 click(fn) 135 8.5.7 dblclick() 135 8.5.8 dblclick(fn) 135 8.5.9 error() 136 8.5.10 error(fn) 136 8.5.11 focus() 137 8.5.12 focus(fn) 138 8.5.13 focusin(fn) 138 8.5.14 focusout(fn) 139 8.5.15 keydown() 139 8.5.16 keydown(fn) 139 8.5.17 keypress() 140 8.5.18 keypress(fn) 140 8.5.19 keyup() 141 8.5.20 keyup(fn) 141 8.5.21 load(fn) 141 8.5.22 mousedown(fn) 141 8.5.23 mousemove(fn) 142 8.5.24 mouseout(fn) 142 8.5.25 mouseover(fn) 142 8.5.26 mouseup(fn) 142 8.5.27 resize(fn) 143 8.5.28 scroll(fn) 143 8.5.29 select() 144 8.5.30 select(fn) 144 8.5.31 submit() 144 8.5.32 submit(fn) 145 8.5.33 unload(fn) 145 9. 效果 146 9.1 基本 146 9.1.1 show() 146 9.1.2 show(speed, [callback]) 146 9.1.3 hide() 147 9.1.4 hide(speed, [callback]) 147 9.1.5 toggle() 148 9.1.6 toggle(switch) 149 9.1.7 toggle(speed, [callback]) 149 9.2 滑动 150 9.2.1 slideDown(speed, [callback]) 150 9.2.2 slideUp(speed, [callback]) 151 9.2.3 slideToggle(speed, [callback]) 152 9.3 淡入淡出 152 9.3.1 fadeIn(speed, [callback]) 152 9.3.2 fadeOut(speed, [callback]) 153 9.3.3 fadeTo(speed, opacity, [callback]) 154 9.4 自定义 155 9.4.1 animate(params, [duration], [easing], [callback]) 155 9.4.2 animate(params, options) 157 9.4.3 stop([clearQueue], [gotoEnd]) 160 9.4.4 delay(duration, [queueName]) 161 9.5 设置 161 9.5.1 jQuery.fx.off 161 10. Ajax 162 10.1 Ajax 请求 162 10.1.1 jQuery.ajax([options]) 162 10.1.2 load(url, [data], [callback]) 170 10.1.3 jQuery.get(url, [data], [callback], [type]) 171 10.1.4 jQuery.getJSON(url, [data], [callback]) 172 10.1.5 jQuery.getScript(url, [callback]) 173 10.1.6 jQuery.post(url, [data], [callback], [type]) 174 10.2 Ajax 事件 175 10.2.1 ajaxComplete(callback) 175 10.2.2 ajaxError(callback) 175 10.2.3 ajaxSend(callback) 176 10.2.4 ajaxStart(callback) 176 10.2.5 ajaxStop(callback) 177 10.2.6 ajaxSuccess(callback) 177 10.3 其它 178 10.3.1 jQuery.ajaxSetup([options]) 178 10.3.2 serialize() 178 10.3.3 serializeArray() 179 11. 工具 180 11.1 浏览器及特性检测 180 11.1.1 jQuery.support 180 11.1.2 jQuery.browser 181 11.1.3 jQuery.browser.version 182 11.1.4 jQuery.boxModel 182 11.2 数组和对象操作 183 11.2.1 jQuery.each(object, [callback]) 183 11.2.2 jQuery.extend([deep], target, object1, [objectN]) 183 11.2.3 jQuery.grep(array, callback, [invert]) 185 11.2.4 jQuery.makeArray(obj) 186 11.2.5 jQuery.map(array, callback) 186 11.2.6 jQuery.inArray(value, array) 187 11.2.7 jQuery.toArray() 188 11.2.8 jQuery.merge(first, second) 188 11.2.9 jQuery.unique(array) 189 11.2.10 jQuery.parseJSON(json) 189 11.3 函数操作 190 11.3.1 jQuery.noop 190 11.3.2 jQuery.proxy(function, scope) 190 11.4 测试操作 191 11.4.1 jQuery.contains(container, contained) 191 11.4.2 jQuery.isArray(obj) 192 11.4.3 jQuery.isFunction(obj) 192 11.4.4 jQuery.isEmptyObject(obj) 193 11.4.5 jQuery.isPlainObject(obj) 193 11.5 字符串操作 194 11.5.1 jQuery.trim(str) 194 11.6 URL 194 11.6.1 jQuery.param(obj, [traditional]) 194 11.7 插件编写 196 11.7.1 jQuery.error(message) 196 12. 关于 197 12.1 关于jQuery 中文文档 197 12.2 关于jQuery 1.3 版翻译 197 12.3 关于jQuery 1.2 版翻译 197 12.4 提交bug及获取更新 197 12.5 changelog 198 ....................................... .......................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值