当前位置: 首页 > 编程笔记 >

实例解析jQuery中proxy()函数的用法

丌官炎彬
2023-03-14
本文向大家介绍实例解析jQuery中proxy()函数的用法,包括了实例解析jQuery中proxy()函数的用法的使用技巧和注意事项,需要的朋友参考一下

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

jQuery.proxy( function, context )

function将要改变上下文语境的函数。

context函数的上下文语境(`this`)会被设置成这个 object 对象。

jQuery.proxy( context, name )

context函数的上下文语境会被设置成这个 object 对象。

name将要改变上下文语境的函数名(这个函数必须是前一个参数 ‘context' 对象的属性)

这个方法通常在向一个元素上附加事件处理函数时,上下文语境实际是指向另一个对象的情况下使用。

另外,jQuery 能够确保即使你绑定的函数是经过 jQuery.proxy() 处理过的函数,你依然可以用原先的函数来正确地取消绑定。

参数:
function:Function类型需要更改上下文对象的函数。
context:任意类型指定为函数设置的上下文对象。
name:String类型需要更改上下文对象的函数名称(它应该是context的一个属性)。
additionalArguments 可选/任意类型指定调用该函数时需要传入的参数,参数可以有任意多个。

注意事项:
参数additionalArguments是从 jQuery 1.6 开始支持的。
该方法非常适用于在附加事件处理函数时,将事件处理函数的上下文指向另一个对象。此外,jQuery确保:即使你使用jQuery.proxy()返回的"代理"函数来绑定事件,如果你在解除绑定时传入原函数,jQuery仍然可以正确解除绑定。
从jQuery 1.9 开始,如果context为null或undefined,则"代理"函数的上下文不会发生更改。这将允许jQuery.proxy()只传入函数的参数,而不更改函数的上下文。

实例

我们先看个例子:

//正常的this使用
$('#Haorooms').click(function() {

  // 这个this是我们所期望的,当前元素的this.

  $(this).addClass('aNewClass');

});
//并非所期望的this
$('#Haorooms').click(function() {

  setTimeout(function() {

     // 这个this指向的是settimeout函数内部,而非之前的html元素

    $(this).addClass('aNewClass');

  }, 1000);

});

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

$('#Haorooms').click(function() {
  var that = this;  //设置一个变量,指向这个需要的this

  setTimeout(function() {

     // 这个this指向的是settimeout函数内部,而非之前的html元素

    $(that).addClass('aNewClass');

  }, 1000);

});

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

有两种语法:

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

jQuery.proxy( context, name )
/**context函数的上下文语境会被设置成这个 object 对象。
**name将要改变上下文语境的函数名(这个函数必须是前一个参数 ‘context' **对象的属性)
**/

上面的例子使用这种方式就可以修改成:

$('#Haorooms').click(function() {

  setTimeout($.proxy(function() {

    $(this).addClass('aNewClass'); 

  }, this), 1000);

});
 类似资料:
  • 本文向大家介绍实例解析jQuery工具函数,包括了实例解析jQuery工具函数的使用技巧和注意事项,需要的朋友参考一下 一、$.browser对象属性   属性列表                  说明     webkit       webkit相关浏览器则返回true,否则返回false,如google,傲游。     mozilla       mozilla相关浏览器则返回true,否

  • 本文向大家介绍Sql Server中Substring函数的用法实例解析,包括了Sql Server中Substring函数的用法实例解析的使用技巧和注意事项,需要的朋友参考一下 SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) S

  • 本文向大家介绍jQuery解析json数据实例分析,包括了jQuery解析json数据实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了jQuery解析json数据的方法。分享给大家供大家参考,具体如下: 先来看看我们的Json数据格式: 为了消除乱码问题,我们设置一个过滤器(代码片段) 服务端我用Servlet生成json数据(代码片段)。 页面端JQuery代码: 之前为了省事,

  • 本文向大家介绍jQuery中toggle()函数的使用实例,包括了jQuery中toggle()函数的使用实例的使用技巧和注意事项,需要的朋友参考一下 今天遇到一个有趣的例子,将它记录下来。 一个一级菜单,里边有一个二级菜单,二级菜单是通过锚点来链接页面元素的。想要实现的效果是当点击锚点时,页面链接到相应锚点,同时二级菜单隐藏,再点击一级菜单时,继续执行。。 其中试了很多种方法都不行,最后通过读j

  • 本文向大家介绍ES6中Proxy代理用法实例浅析,包括了ES6中Proxy代理用法实例浅析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6中Proxy代理用法。分享给大家供大家参考,具体如下: ES6中提出了一个新的特性,就是proxy,用来拦截在一个对象上的指定操作。这个功能非常的有用。举一个例子来说: engineer对象被代理Proxy构建的代理对象代替,传入Proxy的第二个

  • 本文向大家介绍实例解析ES6 Proxy使用场景介绍,包括了实例解析ES6 Proxy使用场景介绍的使用技巧和注意事项,需要的朋友参考一下 ES6 中的箭头函数、数组解构、rest 参数等特性一经实现就广为流传,但类似 Proxy 这样的特性却很少见到有开发者在使用,一方面在于浏览器的兼容性,另一方面也在于要想发挥这些特性的优势需要开发者深入地理解其使用场景。就我个人而言是非常喜欢 ES6 的 P