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的几种方法
Oct 23 Javascript
Extjs入门之动态加载树代码
Apr 09 Javascript
拖动时防止选中
Feb 03 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
javascript实现小型区块链功能
Apr 03 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
JS实现可控制的进度条
Mar 25 Javascript
如何用JavaScipt测网速
May 09 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 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
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Vue路由前后端设计总结
2019/08/06 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
夜不归宿检讨书
2014/02/25 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
运动会宣传稿50字
2015/07/23 职场文书
年终工作总结范文
2019/06/20 职场文书
python实现简单倒计时功能
2021/04/21 Python