博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jquery $.proxy使用
阅读量:4156 次
发布时间:2019-05-26

本文共 1098 字,大约阅读时间需要 3 分钟。

在某些情况下,我们调用Javascript函数时候,this指针并不一定是我们所期望的那个。例如:

//正常的this使用      $('#myElement').click(function() {         // 这个this是我们所期望的,当前元素的this.        $(this).addClass('aNewClass');      });

//并非所期望的this

$('#myElement').click(function() {   setTimeout(function() {        // 这个this指向的是settimeout函数内部,而非之前的html元素     $(this).addClass('aNewClass');  }, 1000); });

这时候怎么办呢,通常的一种做法是这样的:

$('#myElement').click(function() {     var that = this;   //设置一个变量,指向这个需要的this      setTimeout(function() {          // 这个this指向的是settimeout函数内部,而非之前的html元素            $(that).addClass('aNewClass');     }, 1000); });

复制代码

但是,在使用了jquery框架的情况下, 有一种更好的方式,就是使用$.proxy函数。

jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境。

有两种语法:

jQuery.proxy( function, context )

/**function将要改变上下文语境的函数。
** context函数的上下文语境(this)会被设置成这个 object 对象。
**/

jQuery.proxy( context, name )

/**context函数的上下文语境会被设置成这个 object 对象。
name将要改变上下文语境的函数名(这个函数必须是前一个参数 ‘context’ 对象的属性)
**/
复制代码
上面的例子使用这种方式就可以修改成:

$('#myElement').click(function() {    setTimeout($.proxy(function() {         $(this).addClass('aNewClass');      }, this), 1000); });

转载地址:http://qrzxi.baihongyu.com/

你可能感兴趣的文章
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
查看>>
第三方SDK:JPush SDK Eclipse
查看>>
第三方开源库:imageLoader的使用
查看>>
Android studio_迁移Eclipse项目到Android studio
查看>>
转载知乎-前端汇总资源
查看>>