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 对象是否存在判断
Jul 15 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
Sep 17 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
Bootstrap模态窗口源码解析
Feb 08 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
vue中keep-alive的用法及问题描述
May 15 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 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创建动态图像
2006/10/09 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
Python基础中所出现的异常报错总结
2016/11/19 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
详解Python_shutil模块
2019/03/15 Python
python面向对象 反射原理解析
2019/08/12 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
标记环介质访问控制协议
2016/03/27 面试题
普通大学毕业生自荐信
2013/11/04 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers
CSS的calc函数用法小结
2022/06/25 HTML / CSS