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下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
js查找父节点的简单方法
Jun 28 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 Javascript
JavaScript学习笔记之内置对象
Jan 22 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
vue项目常用组件和框架结构介绍
Dec 24 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
请求时token过期自动刷新token操作
Sep 11 Javascript
vue中如何添加百度统计代码
Dec 19 Vue.js
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/21 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
python属于跨平台语言码
2020/06/09 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Python实现石头剪刀布游戏
2021/01/20 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
测控技术与仪器个人求职信范文
2013/12/30 职场文书
《学会合作》教学反思
2014/04/12 职场文书
七一党日活动总结
2014/07/08 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
学困生转化工作总结
2015/08/13 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL