code

ajax success 콜백 함수 내의 $(this)에 액세스하는 방법

starcafe 2023. 3. 29. 21:40
반응형

ajax success 콜백 함수 내의 $(this)에 액세스하는 방법

jquery ajax success 함수의 $(this)에 액세스할 수 없는 것 같습니다.아래 코드를 참조하십시오.

 $.ajax({
   type: 'post',
   url: '<?php echo site_url('user/accept_deny_friendship_request')?>',
   data: 'action='+$action+'&user_id='+$user_id,
   success: function(response){
     //cannot access $(this) here $(this).parent().remove();
   }
 });

해야 할 일$(this)be? 해당 함수 외부에 참조가 있는 경우 변수에 저장할 수 있습니다.

$('#someLink').click(function() {
    var $t = $(this);
    $.ajax( ... , function() {
        $t.parent().remove();
    });
}

콘텍스트 옵션을 확인해 주세요.내게 딱 맞는 것 같아요.

$.ajax({
    context: this,
    type: 'post',
    url: '<?php echo site_url('user/accept_deny_friendship_request')?>',
    data: 'action='+$action+'&user_id='+$user_id,
    success: function(response){
       //can access this now!
    }
});

네가 원한다면this되려고thisAjax 콜의 컨텍스트에서는,.bind()다음과 같습니다.

$.ajax({
  url: 'some_url'
  success: function(data) {
    // do something 'this'
  }.bind(this)
})

그것은 의 가치를 구속하다this에 대한 성공 콜백의 내부this밖으로.

의 범위를 변경하려면 , 를 호출해 주세요.this기능 내부:

$.ajax({
    success: $.proxy(function(response) { $(this).parent().bla(); }, $(this));
});

안보여요.$(this)참조하기 쉬운 방법은 요소에 클래스 또는 ID를 지정하고 jquery에서 참조하는 것입니다.

대신:

$(this).parent().remove();

다음과 같은 작업을 할 수 있습니다.

$('#element_id').parent().remove();

주의: 여기서는 하나의 요소/반복에 대처하고 있다고 가정합니다.

이제 ES6 화살표 기능을 사용하여 간단하게 구현할 수 있습니다.다음과 같이 어나니머스 함수를 화살표 함수식으로 변환할 수 있습니다.

 $.ajax({
   ..,
   success: (response) => {
     // access this outside of this function scope by using `this`
   }
 });

오래된 브라우저를 지원하려면 babel과 같은 트랜스필러를 사용하십시오.

언급URL : https://stackoverflow.com/questions/2643798/how-to-access-the-this-inside-ajax-success-callback-function

반응형