2014-09-16 4 views
0

Я ищу, чтобы добавить класс в элемент, который нажал после успешного завершения POST. По какой-то причине ни «это», ни «add_favorite», это «добавляет» в избранное. Все остальное прекрасно работает.Добавить класс по успеху

Любые идеи?

$('.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; 
}); 

Примечание:

  • Я, как правило, префикс переменного объекта JQuery с $
  • Вы должны объявить все локальные переменные с var или модифицируют/загрязнять глобальное пространство имен.
+0

Отлично, спасибо! – ok1ha

Смежные вопросы