>웹 프론트엔드 >JS 튜토리얼 >jquery.proxy의 네 가지 사용 시나리오에 대한 자세한 예

jquery.proxy의 네 가지 사용 시나리오에 대한 자세한 예

零下一度
零下一度원래의
2017-06-17 17:47:241694검색

사실 사용법은 2가지 밖에 없는데, 각각 매개변수를 전달할지 여부로 세분화됩니다.

나중에 테스트에 사용할 HTML 조각을 먼저 주세요.



1, jquery.proxy(function, context);

context를 함수 실행 컨텍스트로 사용(예: this)

2, jQuery.proxy(function, context) [, extraArguments]);

함수에 매개변수 전달

사용 시나리오: 클릭하면 해당 컨텍스트에서 두 개의 매개변수가 동시에 전달됩니다. 함수의 세 번째 매개변수입니다.

참고: 함수 실행 환경에서 프록시를 적용할 수 없는 경우 컨텍스트는 현재 클릭한 개체가 됩니다. 이제 다른 컨텍스트가 지정되었으므로 현재 클릭한 개체와 아무 관련이 없습니다.

 var me = {
   /* I'm a dog */
   type: "dog",
   
   /* Note that event comes *after* one and two */
   test: function(one, two, event) {
     $("#log")
       /* `one` 是第一个附加参数,与对象`you`对应 */
       .append( "<h3>Hello " + one.type + ":</h3>" )
       /* `two` 是第二个附加参数,与对象`they`对应 */
       .append( "and they are " + two.type + ".<br>" )
       /* `this` 是上下文,与普通对象`me`对应 */
       .append( "I am a " + this.type + ", " )
  
       
       /* 事件类型是点击"click" */
       .append( "Thanks for " + event.type + "ing " )
       /* `event.target`是被点击元素,类型是按钮button */
       .append( "the " + event.target.type + "." );
   }
 };
  
 var you  = { type: "cat" };
 var they = { type: "fish" };
  
 
 /* 一共4个参数:第一个是function,第二个是context,第三、四是参数 */
 var proxy = $.proxy( me.test, me, you, they );
 
 $("#test").on( "click", proxy );
 /* 运行结果:
 Hello cat:
 and they are fish.
 I am a dog, Thanks for clicking the submit.
 */
이 경우 클릭은 트리거 버튼과 동일하며 트리거 후에 실행되는

function은 클릭과 관련이 없습니다.

3, jQuery.proxy(context, name);

사용 시나리오: context는 Plain

Object이고 name은 해당 메서드입니다. 클릭 시 실행되지만 테스트 함수의 실행 컨텍스트는 $("#test")

 var obj = {
     name: "John",
     test: function() {
         console.log(this);
         $("#log").append( this.name );
         $("#test").off("click", obj.test);
     }
 };
 $("#test").on( "click", jQuery.proxy( obj, "test" ) );//在click时执行,但又
不是click的上下文
가 아닌 obj입니다. 결과 분석: 클릭 이벤트를 바인딩한 후 처음 실행될 때 바인딩이 제거됩니다.

제거 후에는 버튼에 클릭 이벤트가 발생하지 않으므로 다시 버튼을 클릭해도 아무런 반응이 없습니다.

4, jQuery.proxy(context, name [, addedArguments]);

질문:

질문하고 싶습니다.


jQuery.proxy(context, function, params);

and

function.call(컨텍스트, 매개변수);



위 내용은 jquery.proxy의 네 가지 사용 시나리오에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.