jQuery access()方法
最开始只是想了解attr方法,发现它内部调用了jQuery.access()方法。除了attr,还有prop、text、html、css、data 都是内部调用了jQuery.access()方法,可见它的重要。
attr: function( name, value ) {
return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
}
prop: function( name, value ) {
return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
}
text: function( value ) {
return jQuery.access( this, function( value ) {
//code
}, null, value, arguments.length );
}
html: function( value ) {
return jQuery.access( this, function( value ) {
//code
}, null, value, arguments.length );
}
css: function( name, value ) {
return jQuery.access( this, function( elem, name, value ) {
//code
}, name, value, arguments.length > 1 );
}
data: function( key, value ) {
//code
return jQuery.access( this, function( value ) {
//code
}, null, value, arguments.length > 1, null, true );
}
源码分析:
access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
var i = 0,
length = elems.length,//jquery对象的长度
bulk = key == null;//false
// Sets many values
if ( jQuery.type( key ) === "object" ) {//键值对方式赋值
chainable = true;//链式
for ( i in key ) {//遍历递归调用自身
jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
}
// Sets one value
} else if ( value !== undefined ) {//单赋值
chainable = true;//链式
//这种情况也是赋值 如.attr( attributeName, function(index, attr) )传入的value就是一个函数
if ( !jQuery.isFunction( value ) ) {//如果第四个参数不是函数,raw为true
raw = true;
}
if ( bulk ) {//key为null或者undefined时
// Bulk operations run against the entire set
if ( raw ) {
fn.call( elems, value );//不知道这种情况什么时候出现
fn = null;
// ...except when executing function values
} else {
bulk = fn;
fn = function( elem, key, value ) {
return bulk.call( jQuery( elem ), value );
};
}
}
if ( fn ) {//如果第二个参数函数存在
for ( ; i < length; i++ ) {//对jquery数组中的每一个元素调用回调
//如果value不是函数 fn(elems[i], key,value);
//如果value是函数:fn(elems[i], key,value.call( elems[i], i, fn( elems[i], key )));
fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
}
}
}
return chainable ? //如果是链式
elems : //返回jquery对象
// Gets 不是链式,是获取值
bulk ? //key为undefined或者null
fn.call( elems ) :
length ? fn( elems[0], key ) : emptyGet; //如果jquery对象有长度,获取对象第一个元素的键值,没长度,返回emptyGet
}
目前的疑问:
1、什么情况下key的值为null和undefined
to be continue...
jQuery access()方法的更多相关文章
- jquery access方法 有什么用
Jquery设置对象属性的有几种方法1.获取属性attr(name) 2.设置属性attr(name,value)3.批量设置属性attr(properties)4.为所有匹配的元素设置一个计算的属性 ...
- jquery工具方法access详解
access : 多功能值操作(内部) access方法可以使set/get方法在一个函数中体现.比如我们常用的css,attr都是调用了access方法. css的使用方法: $(selector) ...
- jQuery.access源码分析
基本理解 jQuery.attr是jQuery.attr,jQuery.prop,jQuery.css提供底层支持,jQuery里一个比较有特色的地方就是函数的重载, 比如attr,有如下几种重载 $ ...
- 使用jquery的方法和技巧2,点击多选框的jquery响应
使用jquery来控制多选框的变化 功能描述: 1.第一层 当选中后台应用(App1)时,所有多选框都被选择. 当取消选中后台应用(App1)时,所有多选框都被取消选择. 第一层的逻辑如下: 2.第二 ...
- 使用jquery的方法和技巧
1.下载一个jquery.js的文件 2.引入jquery.js文件 <script type="text/javascript" src="__PUBLIC__/ ...
- Django配合使用Jquery post方法
Django使用jQuery的post方法需要解决两个问题: 1.Django中为了防止跨站请求,在post提交时都会带上csrf_token,利用Jquery进行post请求也需要:否则就会出现40 ...
- jQuery on()方法
jQuery on()方法是官方推荐的绑定事件的一个方法. $(selector).on(event,childSelector,data,function,map) 由此扩展开来的几个以前常见的方法 ...
- jquery ajax 方法及各参数详解
1.$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息. 参数列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type ...
- jquery.extend方法
jquery.extend()用来扩展jquery中方法,实现插件. 1.jQuery.extend函数详细用法! 扩展jQuery静态方法. 1$.extend({ 2test:function() ...
随机推荐
- 用secureCRT ssh登陆不显示用户名和路径解决方案 分类: 软件工具学习 2015-03-18 16:52 36人阅读 评论(0) 收藏
方法1 每次开始的时候输入 bash 虽然只能保存一次,但是简便. 方法2 用 vi ~/.bash_profile 编辑这个文件, 有时会提示这个文件不存在,直 ...
- POJ1087 A Plug for UNIX —— 最大流
题目链接:https://vjudge.net/problem/POJ-1087 A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K T ...
- HDU2295 Radar —— Dancing Links 可重复覆盖
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2295 Radar Time Limit: 2000/1000 MS (Java/Others) ...
- JQuery操作TABLE,及console.info问题。
还用alert 吗?看看console.info吧,代码的测试平台:ie9, firefox12 1. [代码][JavaScript]代码<!DOCTYPE html><html ...
- ad广告下拉收起代码
1. [代码][JavaScript]代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...
- 书写优雅的shell脚本(插曲) - kill
shell之kill.killall.xkill.pkill 2013-01-08 22:03:28| 分类: Linux|举报|字号订阅 1 kill kill的应用是和ps 或pgrep 命令结 ...
- Mixing Milk
链接 分析:水题,按照价格从小到大排序,在进行贪心即可 /* PROB:milk ID:wanghan LANG:C++ */ #include "iostream" #inclu ...
- http基础知识摘录
HTTP是一个基于请求/响应模式的,无状态的协议 (只有客户端发送请求服务器才会响应,否则服务器不会主动发送信息的,无状态指客户端发过来一个请求服务端给你发回一个响应,接着你再去发送一个请求,服务器根 ...
- 如何在单独的窗口中打开 Excel 文件
如何在单独的窗口中打开 Excel 文件 文章编号:087583 2012/11/1 18:45:29 故障现象: 如何在单独的窗口中打开 Excel 文件? 解决方案: 比较安全的方法就是直 ...
- 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...