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 最佳实践
Oct 30 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
在Ubuntu上安装最新版本的Node.js
Jul 14 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
javascript发送短信验证码实现代码
Nov 12 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
json数据处理及数据绑定
Jan 25 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
vue+element-ui+ajax实现一个表格的实例
Mar 09 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
Sep 06 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
默默简单的写了一个模板引擎
2007/01/02 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Javascript的并行运算实现代码
2010/11/19 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
python开发中module模块用法实例分析
2015/11/12 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
python实现维吉尼亚加密法
2019/03/20 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
什么是事务?为什么需要事务?
2012/01/09 面试题
大学生毕业自我评价范文分享
2013/11/11 职场文书
投标承诺书范本
2014/03/27 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
十二生肖观后感
2015/06/12 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸