您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页jQuery中proxy()函数的用法

jQuery中proxy()函数的用法

来源:二三娱乐

$.proxy 方法接受一个已有的函数,并返回一个带特定上下文的新的函数。
该方法通常用于向上下文指向不同对象的元素添加事件

  • function 要被调用的已有的函数。
  • context 函数所在的对象的名称。
  • name 已有的函数,其上下文将被改变(应该是 context 对象的属性)。
//正常的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); 
});

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务