jQuery 的核心分为
jQuery 核心函数
jQuery 对象访问
数据缓存
队列控制
插件机制
多库共存
之前分析了核心函数,有太多的不明白.今天分析了 对象访问,插件机制 .jQuery1.4.1.js 和API 下载
.
/*
* jQuery1.4.1 代码分析 isw2 zhoux
*/
//jQuery 插件机制
jQuery.fn = jQuery.prototype = {}//声明 jQuery.fn 是jQuery.prototype 的简写
jQuery.fn.init.prototype = jQuery.fn;//jQuery.fn.init 继承 jQuery.fn的所有方法(JavaScript中属性动态)
jQuery.extend = jQuery.fn.extend = function() {//从这里可以看出jQuery.fn.extend 和 jQuery.extend 是样的,两者只是调用对象不同,jQuery.fn(即jQuery.prototype),jQuery
//arguments 代表传入参数,arguments[0]即第1个参数
//javaScript 里没有块定义,这里用到变量在方法开始处声明
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
if ( typeof target === "boolean" ) {//标记是否深入复制属性
deep = target;//标记是否需要深入复制属性
target = arguments[1] || {};//{}简写的方法一个新的对象
i = 2;
}
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {// target为非对象,非函数
target = {};
}
if ( length === i ) {
target = this;//如果jQuery.fn.extend,this代jQuery.fn(即jQuery.prototype);如果是jQuery.extend 则this代jQuery
--i;
}
for ( ; i < length; i++ ) {
if ( (options = arguments[ i ]) != null ) {//仅处理 non-null/undefined (javascript 中 != null 包扩undefined)
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
if ( target === copy ) {//防止死循环
continue;
}
if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {//如果copy 的值是一个object 或数组,且deep == true
var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
: jQuery.isArray(copy) ? [] : {};
target[ name ] = jQuery.extend( deep, clone, copy );//递归
} else if ( copy !== undefined ) {//不能使用undefined 的值
target[ name ] = copy;
}
}
}
}
return target;//返回修改后的值
};
jQuery.extend();// 针对jQuery 方法(类),扩展jQuery对象本身。
jquery.fn.extend();//针对jQuery 对象,扩展 jQuery 元素集来提供新的方法(通常用来制作插件)。
//jQuery 对象访问
jQuery.fn = jQuery.prototype = {
each: function( callback, args ) {//$().each
return jQuery.each( this, callback, args );
},
size: function() {
return this.length;
},
length: 0,
selector: "",
get: function( num ) {//如果num == null || num < 0 返回Array.slice[0]即所有元素,否则根据num 返回($(**).[num]为简写,此方法用于获DOM 对象)
return num == null ? this.toArray() : ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
},
}
jQuery.fn.extend({
index: function( elem ) {
if ( !elem || typeof elem === "string" ) {//为字符串或空
//如果是字符串使用jQuery 查找对象然后查找位置,如果是空则返回这个元素在同辈中的索引位置
return jQuery.inArray( this[0], elem ? jQuery( elem ) : this.parent().children() );
}
//如果是jQuery 对象则从[0]查找,否则当作对象处理
return jQuery.inArray( elem.jquery ? elem[0] : elem, this );
}
});
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {}
jQuery.extend({
each: function( object, callback, args ) {//$.each,参数args仅在内部使用
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction(object);//这里用length 区分是对象还是数组(对象没有length 属性)
if ( args ) {//如果args 有值
if ( isObj ) {//如果是对象
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {//如果是数组
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
}
}
return object;
},
inArray: function( elem, array ) {
if ( array.indexOf ) {//如果 array 有indexOf 属性直接使用
return array.indexOf( elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;//返回所处位置,
}
}
return -1;//返回-1 表示不存在
}
})
分享到:
相关推荐
**jQuery1.4.1 小结** jQuery 是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。在本文中,我们将深入探讨jQuery 1.4.1版本的一些核心特性、改进和常用API。 #...
- **jquery-1.4.1.js**: 这是未压缩的完整版jQuery库,便于开发者阅读和调试代码。 - **jquery-1.4.1.min.js**: 这是经过压缩的版本,通过删除空格、注释和简化变量名来减小文件大小,提高页面加载速度,适合生产...
通过《jQuery 1.4.1 中文版参考》的详细学习,开发者能够掌握这个版本的jQuery核心功能,从而在实际项目中更灵活、高效地编写代码。而提供的`jQueryAPI-100203.chm`文件很可能是jQuery 1.4.1的API参考手册,包含了...
jquery 1.4.1jquery 1.4.1jquery 1.4.1jquery 1.4.1jquery 1.4.1
7. **插件开发**:jQuery的插件机制允许开发者扩展其功能。通过`.fn.extend()`方法,开发者可以添加新的jQuery方法,实现个性化功能。 8. **效率优化**:在使用jQuery时,应注意性能优化,如减少DOM操作次数,使用...
1. **插件机制**:jQuery的插件机制让开发者可以扩展其功能,如`$.extend()`和`$.fn.extend()`。 2. **遍历和过滤**:`$.each()`用于遍历数组或对象,`$(selector).filter()`和`.not()`用于过滤元素集合。 3. **...
虽然jQuery 1.4.1相比后来的版本缺少了一些特性,比如Promise对象和模块化支持,但它仍然支持基本的链式调用和jQuery对象的创建。开发者可以使用`$(document).ready()`来确保文档加载完毕后再执行脚本。 ### 7. ...
总结来说,这个压缩包提供的资源是学习和使用jQuery 1.4.1及其UI组件的一个全面工具包,通过阅读中文API文档,结合实际的JavaScript代码示例,开发者可以深入理解并熟练运用jQuery来创建具有优秀用户体验的Web应用。
jquery 开发中文文档,供开发人员使用。。
在jQuery 1.4.1版本中,这个库提供了丰富的API,使得开发者能够更高效地编写JavaScript代码。 **核心功能** jQuery的核心在于选择、操作DOM元素以及处理事件。以下是一些关键的核心函数: - `jQuery(expression, ...
最新版的jquery1.4.1中文帮助。
jQuery 1.4.1 API 中文参考手册.chm
《jQuery 1.4.1 中文开发手册》是一份详尽的指南,旨在帮助开发者高效地利用jQuery这个JavaScript库进行网页动态效果的创建和Ajax交互。jQuery自诞生以来,因其简洁的语法和强大的功能,成为了JavaScript开发者的...
8. **插件扩展**:JQuery 1.4.1的API设计鼓励插件开发,通过`.extend()`方法,开发者可以方便地扩展JQuery的功能,创建自定义插件。 9. **兼容性**:JQuery 1.4.1在大多数现代浏览器上都能良好运行,包括Internet ...
**jQuery 1.4.1 速查表与jQuery API** jQuery 是一款高效、简洁的JavaScript库,它极大地简化了JavaScript编程,特别是DOM操作、事件处理、动画制作以及Ajax交互。jQuery 1.4.1 是该库的一个早期版本,尽管现在已经...
6. **链式操作**: jQuery的对象返回自身,使得可以连续调用多个方法,如`$('div').addClass('highlight').css('color', 'red')`,这极大地提高了代码的可读性和效率。 7. **插件扩展**: jQuery有一个庞大的插件生态...
5. **插件支持**:jQuery 1.4.1 为插件开发提供了更好的支持,使得社区能够开发出大量优秀的第三方插件,丰富了jQuery的功能。 ### jQuery 1.8.3 发布于2012年,jQuery 1.8.3 是一个更成熟和稳定版本,继续对功能...
6. **链式操作**:jQuery的返回值通常是一个jQuery对象,这使得方法调用可以链接在一起,提高了代码的可读性,如`$('div').addClass('highlight').fadeOut(500)`。 7. **效率提升**:jQuery 1.4.1 版本特别注重性能...
2. **jQuery 1.4.1源代码**:源代码的提供使得开发者可以深入理解jQuery的工作原理,有助于进行二次开发或者调试。通过阅读源码,开发者能够学习到如何优化JavaScript代码,以及如何设计一个高效且易于维护的库。...