JQuery1.6 使用方法三


Posted in Javascript onNovember 23, 2011

a={id:1,get:function(){alert(this.id)}}

$("#test").click(a.get)//这时候所指的id就不是1,而是test

如果想要得到的是1,那就必须改变上下文环境$.

$.proxy()的作用就是改变当前上下文环境。

$("#test").click($.proxy(a,"get"))

$("#test").click($.proxy(a.get,a))

proxy: function( fn, context ) {//改变函数上下文环境,this指向设置的对象

这里的参数可以有两种方式:函数fn fn的方法context

 函数的方法fn[context] 函数fn
if ( typeof context === "string" ) {//如果content是字符串,那么会认为是fn的一个方法 fn[ context ],并在接下来判断是否是函数
var tmp = fn[ context ];
context = fn;
fn = tmp;
}
if ( !jQuery.isFunction( fn ) ) {//不是函数立刻返回undefined
return undefined;
}
var args = slice.call( arguments, 2 ),//把fn,content后面的参数作为要执行的函数参数
proxy = function() {
return fn.apply( context, args.concat( slice.call( arguments ) ) );//返回设置了指定上下文环境的可执行函数,fn为可执行行数,把this指向content,args.concat( slice.call( arguments ) )作为参数,
};
proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;//一个全局的计数器,用于标识该函数可以用来删除
return proxy;
},
//access这个方法主要是在jquery内部使用,用于attr,prop,css;主要设置DOM组(jquery对象)单个或者多个属性、样式的值,获取DOM组(jquery对象)某个属性、样式的值
//elems操作的对象组,key属性,value属性值,exec默认true,fn用来操作的函数,pass主要在attr的时候设置val,css,html,text,data,width,height,offset的时候应该为true.
access: function( elems, key, value, exec, fn, pass ) {
var length = elems.length;
//设置多个属性
if ( typeof key === "object" ) {//如果属性值是对象,将循环设置dom组(jquery对象)的属性和对应的值
for ( var k in key ) {
jQuery.access( elems, k, key[k], exec, fn, value );
}
return elems;//返回结果
}
// 设置单个属性
if ( value !== undefined ) {//如果value存在,设置某个属性,可以是一组对象或者单个;如果不存在,即获取doms[0](jquery对象)某个属性值,只能返回带一个对象,或者由于对象不存在直接返回undefiend;
exec = !pass && exec && jQuery.isFunction(value);//目前jquery默认pass为空null,exec为true,value是否为函数
for ( var i = 0; i < length; i++ ) {
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );//如果exec为true,,传入操作对象的序列和操作属性值作为参数,否则,设置属性key的值为value
}
return elems;
}
// 获取属性
return length ? fn( elems[0], key ) : undefined;
},
now: function() {//返回当前时间
return (new Date()).getTime();
},

Javascript 相关文章推荐
js输出列表实现代码
Sep 12 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
Jquery之Bind方法参数传递与接收的三种方法
Jun 24 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
深入理解JavaScript编程中的同步与异步机制
Jun 24 Javascript
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
Nov 07 Javascript
Angular.js自动化测试之protractor详解
Jul 07 Javascript
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
详解如何提升JSON.stringify()的性能
Jun 12 Javascript
jQuery1.6 使用方法二
Nov 23 #Javascript
jQuery1.6 使用方法一
Nov 23 #Javascript
JS 表单验证大全
Nov 23 #Javascript
JavaScript中的16进制字符(改进)
Nov 21 #Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 #Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 #Javascript
页面调用单个swf文件,嵌套出多个方法。
Nov 21 #Javascript
You might like
php 过滤器实现代码
2010/08/09 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中subprocess模块用法实例详解
2015/05/20 Python
python实现括号匹配的思路详解
2018/08/23 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Python对wav文件的重采样实例
2020/02/25 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
python 利用zmail库发送邮件
2020/09/11 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
商务英语专业自荐信
2013/10/14 职场文书
房产买卖委托公证书
2014/04/04 职场文书
销售口号大全
2014/06/11 职场文书
党员个人剖析材料
2014/09/30 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
JS实现简单的九宫格抽奖
2022/06/28 Javascript