• 회원가입
  • 로그인
  • 구글아이디로 로그인

[Event] JQ - $.proxy() 메서드 - 기존 함수를 가져와 특정 구문을 가진 새 함수로 반환. (= proxy메서드 = 프록시 메서드)

목차

  1. $.proxy() 예제 - 객체에 포함된 값으로 함수 내용 변경
  2. $.proxy() 정의
  3. $.proxy() 구문
  4. $.proxy() 예제 - 지정 함수로 지정 객체의 내용 변경
  5. $.proxy() 예제 - $.proxy() 반환 함수로 바인딩 시, 기존 바인딩 자동 해제

 

$.proxy() 예제 - 객체에 포함된 값으로 함수 내용 변경

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script>

$(document).ready(function(){

  var hz = {

    site: "홈짱닷컴 Homzzang.com",

    open: 2012,

    show: function(){

      $("p").after("사이트 : " + this.site + "<br> 오픈 : " + this.open + "<br/>");

    }

  };

  $("button").click($.proxy(hz, "show"));

});

</script>


<button>클릭</button>


<p></p>


결과보기

 

$.proxy() 정의

 

기존 함수 가져와 특정 내용 들어간 새 함수 반환.

 


 

1.

내용이 다른 객체를 다시 가리키는 요소에 이벤트 연결할 때 주로 사용.

 

2.

$ .proxy에서 반환된 함수(예: sbClick)를 바인딩하면, jQuery는 기존 올바르게 바인딩 되었던 원래 함수의 바인딩을 자동 해제함. (맨 아래 예제 참고.)

 

PS1. 

jQeury $.proxy() 매뉴얼 ★ - 예제 많음.

https://api.jquery.com/jQuery.proxy/

 

PS2.

이 글이 이해 안 되면, 아래 게시글도 참조.

https://dololak.tistory.com/38

 

 

$.proxy() 구문

 

$(selector).proxy(function, context, add) (아래 예제)

또는,

$(selector).proxy(context, name, add(위 예제)

 


[매개변수]

 

function

호출할 기존 함수 지정.

 

context

함수 위치하는 객체명.

 

name

내용 바꿀 기존 함수명. 

context 객체의 속성이여야 함.  

 

add

선택. 함수에 전달할 추가 독립변수. 

※ jQuery 1.6 +

 

 

$.proxy() 예제 - 지정 함수로 지정 객체의 내용 변경

 

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

 

<p><button name="button" id="btn">클릭</button></p>

<div id="demo"></div>

 

<script>

var hz = {

  name: "Homzzang",

  btn: function( event ) {

    var et = event.target;

    $( et ).css( "background-color", "red" );

    $( "#demo" ).append( "홈짱 " + this.name + "<br>" );

    $( "#btn" ).off( "click", this.btn );

  }

};

 

var sb = {

  name: "Sinbi",

  btn: function( event ) {

    $( "#demo" ).append( this.name + " " + "<br>"  );

  }

};

 

var sbClick = $.proxy( sb.btn, sb );


$( "#btn" )

  .on( "click", $.proxy( hz.btn, hz ) ) // 홈짱 Homzzang

  .on( "click", sbClick ) // Sinbi

  .on( "click", $.proxy( sb.btn, hz ) ) // Homzzang

  .on( "click", sb.btn ); // button

</script>

 

결과보기

 

$.proxy() 예제 - $.proxy() 반환 함수로 바인딩 시, 기존 바인딩 자동 해제

 

<script src="https://code.jquery.com/jquery-3.5.0.js"></script>

 

<p><button name="button" id="btn">클릭</button></p>

<div id="demo"></div>

 

<script>

var hz = {

  name: "Homzzang",

  btn: function( event ) {

    var et = event.target;

    $( et ).css( "background-color", "red" );

    $( "#demo" ).append( "홈짱 " + this.name + "<br>" );

    $( "#btn" ).off( "click", this.btn );

  }

};

 

var sb = {

  name: "Sinbi",

  btn: function( event ) {

    $( "#demo" ).append( this.name + " " + "<br>"  );

  }

};

 

var sbClick = $.proxy( sb.btn, sb );


$( "#btn" )

  .on( "click", $.proxy( hz.btn, hz ) ) // 홈짱 Homzzang

  .on( "click", sbClick ) // Sinbi

  .on( "click", $.proxy( hz.btn, hz ) ) // 2번째 클릭부터 출력 X

  .on( "click", sb.btn ); // button

</script>

 

결과보기



분류 제목
HTML_CSS JQ - width() 메서드 ★★★ - 요소 너비 설정/반환. (= width메서드 = 위드스메서드)
HTML_CSS JQ - wrap() 메서드 ★ - 선택요소를 지정 부모요소로 감싸기. (= wrap메서드 = 랩메서드)
HTML_CSS JQ - wrapAll() 메서드 - 선택요소 모두를 한번에 지정 요소로 감싸기. (= wrapAll메서드 …
HTML_CSS JQ - wrapInner() 메서드 - 선택요소 안 내용을 지정 요소로 감싸기 (= wrapInner메서드…
Traversing JQ - add() 메서드 ★ - 일치하는 요소 집합에 지정 요소가 추가된 새 jQuery 객체 생성. (=…
Traversing JQ - addBack() 메서드 - 이전집합요소를 현재집합에 추가 (= 애드백메서드)
Traversing JQ - andSelf() 메서드 - addBack() ​​별칭 (※ 제이쿼리 1.8 버전에서 폐기예고)
Traversing JQ - children() 메서드 ★ - 모든 자식요소 반환 (= children메서드 = 칠드런메서드)
Traversing JQ - closest() 메서드 ★ - 선택요소 첫번째 조상 반환 (= 최근접 지정 조상요소 선택 = cl…
Traversing JQ - contents() 메서드 - 선택요소의 모든 직접 자식요소 반환 (= contents메서드 = 콘…
Traversing JQ - each() 메서드 ★★★ - 각 일치요소에 대해 함수 실행. (= 제이쿼리 반복문 = each메서…
Traversing JQ - end() 메서드 - 현재 체인에서 가장 최근의 필터링 작업을 끝내고 일치 요소집합을 이전 상태로 …
Traversing JQ - eq() 메서드 ★★★ - 선택 요소 중 특정 색인 번호 갖는 요소 반환. (= eq메서드 = 이큐…
Traversing JQ - filter() 메서드 -일치범위축소 (= 필터메서드) ※ 자식요소소유개수선택자 (= 자식개수선택자…
Traversing JQ - find() 메서드 ★★★ - 선택 요소의 자손요소 반환・찾기 (= find메서드 = 파인드메서드)
Traversing JQ - first() 메서드 - 선택요소의 첫번째요소 반환 (= first메서드 = 퍼스트메서드)
Traversing JQ - has() 메서드 - 내부에 하나 이상의 요소가 있는 모든 요소 반환 (= has메서드 = 해즈 메…
Traversing JQ - is() 메서드 ★ - 일치 여부 체크. (= is메서드 = 이즈메서드)
Traversing JQ - last() 메서드 - 선택요소들의 마지막 요소 반환
Traversing JQ - map() 메서드 - 일치하는 요소집합의 각 요소를 함수를 통해 전달하여 반환값 포함하는 새 jQu…
11/15
목록
찾아주셔서 감사합니다. Since 2012