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调用flash的效果代码
Apr 26 Javascript
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
web页面数据展示新想法(json)
Jun 08 Javascript
js跑马灯代码(自写)
Apr 17 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
Aug 31 Javascript
jquery+html仿翻页相册功能
Dec 20 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
微信小程序时间控件picker view使用详解
Dec 28 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 新手入门教程
2009/08/03 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
详解微信UnionID作用
2019/05/15 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Python列表计数及插入实例
2014/12/17 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python实现购物车程序
2018/04/16 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
pycharm安装及如何导入numpy
2020/04/03 Python
python exit出错原因整理
2020/08/31 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
基层党员公开承诺书
2014/05/29 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
MySQL详细讲解变量variables的用法
2022/06/21 MySQL