关于jQuery的$.proxy()应用.
今天在看<<锋利的jQuery>>时看到了proxy()的使用,感觉很模糊,就到处找资料.
jQuery的源码也没看明白.
不过总算明白了proxy的用法了;
- <input type="button" value="测试" id="guoBtn" name="我是按钮的name"/>
- var obj = {
- name: "我是obj的name",
- sayName: function () {
- alert(this.name);
- }
- }
- $("#guoBtn").click(obj.sayName); //我是按钮的name
- // 如果我想访问obj的name怎么办呢?
- $("#guoBtn").click($.proxy(obj.sayName,obj));//"我是obj的name"
- $("#guoBtn").click($.proxy(obj, "sayName")); //"我是obj的name"
从上面proxy(a,b)的用法可以看出他的参数有两种写法.
第一种:a是一个function函数,b是这个函数的对象所有者.
第二种:a是一个对象,b是一个字符串,是a的属性名.
还有这个实例就是<<锋利的jQuery>>上的一个例子了.
- <div id="panel" style="display:none;">
- <button>Close</button>
- </div>
- $("#panel").fadeIn(function () {
- $("#panel button").click(function () {
- $(this).fadeOut();
- });
- });
button虽然消失了,但是panel却没有消失.可以使用proxy来解决这个问题.
- $("#panel").fadeIn(function () {
- var obj = this;
- $("#panel button").click($.proxy(function () {
- $(this).fadeOut();
- }, obj));
- });
这样单击按钮之后,panel才会消失.
个人感觉proxy最主要就是用来修改函数执行时的上下文对象的.
是在apply的基础上做的封装,所以说proxy就是我们jQuery自己的apply.
关于jQuery的$.proxy()应用.的更多相关文章
- jQuery中$.proxy()的原理和使用
jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境. jQuery.proxy( function, context ) fu ...
- JQuery之proxy实现绑定代理
在javascript中,this指代的对象时常会变化,这会造成程序,混乱,一般做法就是先将this保存在一个变量中,就不怕她变了,我们先看一个小例子 var A = function(){ this ...
- jquery函数$.proxy简单示例
来自于<jquery 权威指南> ------------------------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- jQuery 之$.proxy() 方法
定义和用法 $.proxy 方法接受一个已有的函数,并返回一个带特定上下文的新的函数. 该方法通常用于向上下文指向不同对象的元素添加事件. 参数 描述 function 要被调用的已有的函数. con ...
- 关于jquery.bind
随着现在JQuery这个javascript的越来越强大,在我们平常的前端UI开发,如果不使用JQuery,说明你已经很out了.今天我们来学习一下 JQuery的bind事件.虽然,这个话题被很 ...
- HTML中动态图片切换JQuery实现
相信很多同学都注意到了,各大新闻或者娱乐网站都含有动态图片切换,那个漂亮的感觉让刚刚学习html的人,都非常好奇和心动.那下面就让我们看一下到底如何实现动态图片切换呢?看一下百度贴吧的效果图吧~ // ...
- jQuery的发展史
jQuery的发展史,你知道吗? 每天多学一点知识,就少写一行代码2006年1月,jQuery的第一个版本面世,至今已经有6年多了(注:这个时间点是截止至出书时间).虽然过了这么久,但它依然以其简洁. ...
- JQuery 的Bind()事件
刚开始我们先看一下它的定义: .bind( eventType [, eventData], handler(eventObject)) .Bind()方法的主要功能是在向它绑定的对象上面提供一些事件 ...
- jQuery 源码学习笔记
//检测 window 中新增的对象 //first var oldMap = {}; for(var i in window) { oldMap[i] = 1; } //second for(var ...
随机推荐
- 配置github的SSH key及GitHub项目上传方式一——使用终端命令行
GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤——往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:htt ...
- 【Docker】Windows下docker环境搭建及解决使用非官方终端时的连接问题
背景 时常有容器方面的需求,经常构建调试导致测试环境有些混乱,所以想在本地构建一套环境,镜像调试稳定后再放到测试环境中. Windows Docker 安装 安装docker toolbox 博主的电 ...
- [Kafka] - Kafka Java Consumer实现(二)
Kafka提供了两种Consumer API,分别是:High Level Consumer API 和 Lower Level Consumer API(Simple Consumer API) H ...
- java中如何使用Junit测试
java中如何使用Junit测试 一.总结 一句话总结:a.单元测试的测试代码在test文件夹下,和源码不在同一个文件夹下 b.测试的类方法都以test开头,后面接要测试的类或者方法的名字 1.JUn ...
- Django框架基于session的登录/注销实现
博主最近想基于Django框架开发一个测试平台,第一版先实现查看下载自动化的测试报告文件 第一步:前端框架 网上选择一款开源boostrap的前端框架 AdminLTE,这里给个链接 https:/ ...
- log模块和report模块
这两个模块不需要管,我们生成的log和report直接添加到这里就好
- java打开windows系统的浏览器
获得百度的数据有两种方式,一种是用Url从流中获得,另一种是直接打开浏览器.文字识别(OCR)后再转码可以快速百度 public static void main(String[] args) thr ...
- windows使用git记录
1.免密码clone远程服务器代码开启ssh 生成私钥公钥 命令:查看自己配置的邮箱 git config user.name git config user.email 生成密钥:邮箱填写上面查看出 ...
- Linux下weblogic启动报错unable to get file lock的问题
非正常结束weblogic进程导致weblogic无法启动 由于先前服务器直接down掉了,所有进程都非正常的进行关闭了,也就导致了下次启动weblogic的时候报了以下错误:<2012-3-2 ...
- [Python开发工具] Pycharm之快捷键
[Python开发工具] Pycharm之快捷键 1 全局搜索: Ctrl+Shift+F,不过PyCharm的更强大, 你可以点选左侧某个目录后再按Ctrl+Shift+F, 这样默认会搜索改目录; ...