版权声明:本文为博主原创文章,未经博主允许不得转载。 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
}