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 相关文章推荐
javascript 单选框,多选框美化代码
Aug 01 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
Jul 01 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
Node.js中的缓冲与流模块详细介绍
Feb 11 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
Jun 23 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
js实现视图和数据双向绑定的方法分析
Feb 05 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
PHP单链表的实现代码
2016/07/05 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
python操作日期和时间的方法
2014/03/11 Python
python3生成随机数实例
2014/10/20 Python
python下MySQLdb用法实例分析
2015/06/08 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python中请不要再用re.compile了
2019/06/30 Python
对Python _取log的几种方式小结
2019/07/25 Python
python实现实时视频流播放代码实例
2020/01/11 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
简述数组与指针的区别
2014/01/02 面试题
Shell编程面试题
2012/05/30 面试题
大学生作弊检讨书
2014/02/19 职场文书
民事赔偿协议书
2014/11/02 职场文书
协议书范文
2015/01/27 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang