JQuery源码笔记jQuery.access研究学习(13)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yilanyoumeng3/article/details/88681730

方法jQuery.access(elems,key, value,exec,fn(elem,key,value), pass) 可以为集合中的元素设置一个或多个属性值,或者读取第一个元素的属性值。如果设置的属性值是函数,并且参数exec是true时,还会执行函数并取其返回值作为属性值。
方法jQuery.access()为 .attr()、.prop() 、.css()提供支持,这三个方法在调用jQuery.access()时,参数exec为true, 参数fn是同时支持读取和设置属性的函数,如jQuery.attr()、jQuery.prop()、jQuery.css()
方法jQuery.access(elems,key, value,exec,fn(elem,key,value), pass) 代码分析如下:

access: function(elems, key, value, exec, fn, pass) {
		// 参数elems: 元素集合,通常是jQuery对象
		// 参数key: 属性名或含有键值对的 对象
		//参数value: 属性值或者函数。当参数为key为对象时候,该参数为undefined
		// exec: 布尔值,当属性值是函数时,该参数指示路是否执行函数
		// fn 回调函数,同时支持读取和设置属性
		// pass布尔值,该参数在功能上与参数exec重叠,并且用法相当繁琐,可以忽略

 		var length = elems.length;
		
		// 如果参数key是对象,表示要设置多个属性,则遍历参数key,为每个属性递归调用方法jQuery.access(),遍历完后返回元素集合elems
		if( typeof key === "object") {
				for (var k in key) {
						jQuery.access(elems, k, key[k], exec, fn, value);
					}
				return elems;	
			}
		
		//设置一个属性值
		if (value !== undefined) {
			exec = !pass && exec && jQuery.isFunction(value);
		for (var i=0; i<length; i++) {
			fn(elems[i], key, exec ?value.call(elems[i]), i, fn( elems[i],key)) : value, pass);
		}
		return elems;
		}
	 return length ? fn(elems[0], key) :undefined
}

猜你喜欢

转载自blog.csdn.net/yilanyoumeng3/article/details/88681730
今日推荐