2014-09-16 3 views
0

POST가 성공한 후에 클릭되는 요소에 클래스를 추가하려고합니다. 웬일인지, "this"도 "add_favorite"도 "this"는 "favorited"를 더하고있다. 다른 모든 것은 잘 작동합니다.성공시 클래스 추가

아이디어가 있으십니까?

$('.add_favorite').click(function(){ 
    expert_id = $(this).attr('data-expert-id'); 
    user_id = $(document.body).attr('data-user-id'); 

    //console.log(user_id); 

    var data = { 
     'expert_id' : expert_id, 
     'user_id' : user_id 
    } 

    var url = "/submit-fav.php"; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: data, 
     success: function(data) 
     { 
      $(this).addClass('favorited'); 
     } 
    }); 

    return false; 
}); 

답변

1

는 당신의 로컬 복사본을 유지할 필요가 원래 "이"(다른 "이"가지고있는)을 성공 콜백의 범위 내에서 액세스하기 위해서이다.

$('.add_favorite').click(function(){ 
    var $add_favorite = $(this); 
    var expert_id = $add_favorite.attr('data-expert-id'); 
    var user_id = $(document.body).attr('data-user-id'); 

    //console.log(user_id); 

    var data = { 
     'expert_id' : expert_id, 
     'user_id' : user_id 
    } 

    var url = "/submit-fav.php"; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: data, 
     success: function(data) 
     { 
      $add_favorite.addClass('favorited'); 
     } 
    }); 

    return false; 
}); 

참고 :

  • 나는 당신이 var 모든 지역 변수를 선언해야하거나 수정/전역 네임 스페이스를 오염 $
  • 와 jQuery를 개체 변수를 접두사하는 경향이있다.
+0

감사합니다. – ok1ha