Jquery源码分析---jQuery类数组的分析
2010-09-14 13:36:40 来源:WEB开发网上面的setArray(elems)函数只是会改变当前jQuery对象的集合,它会清除这个对象集合中以前的元素。但是有的时候我们想保存原来的集合中元素,同时也能就新传入的元素进行jquery对象的操作。它提供了pushStack函数来新建一个jQuery对象同时保存原来对象的引用。这样就可能在需要时用到自己所要的对象:
pushStack : function(elems) {// 采用jQuery构建新对象,同时引用老对象。
var ret = jQuery(elems);// 构建新的jquery对象
ret.prevObject = this;// 保存老的对象的引用
return ret;
},
返回的是新构建成的对象,有着jQuery对象的全部功能,同时还可以通过prevObject来访问原来的老对象。
4.2 类数组的操作
构建了类数组,那么还得提供一些方法来操作这个集合,对于集合的操作无非就是定位元素,查找元素,复制(slice)和删除的操作(splice)等。jQuery还提供each,map的扩展。
这些方法只和集合相关,与集合的元素的无关。jQuery提供了众多的和其中元素(DOM元素)相关的方法。
4.2.1元素定位或取数
Get和index的方法是集合操作中最基本的方法。基本每一种集合的操作都会提供。jquery提供了两个类似的取元素的方法,get(index)和eq(index)元素。
其不同之处在于get取得是集合中的元素,而eq则是返回该元素的Clone,不会修改数组。我们还可以直接通过[i]来直接取元素,用来代替get(i)。不过get()在没有参数时,则是获得全部元素。数组[i]的方式做不到。
// 取到本jquery对象的第几个Dom元素,无参数,代表全部的Dom元素
get : function(num) {
return num == undefined ? jQuery.makeArray(this) : this[num];
},
// 获取第N个元素 。这个元素的位置是从0算起。
eq : function(i) {
return this.slice(i, +i + 1);
},
更多精彩
赞助商链接