2014-09-16 6 views
0

Je cherche à ajouter une classe sur l'élément sur lequel on clique après le succès du POST. Pour une raison quelconque, ni "ceci" ni "" add_favorite ", cela" ajoute "" favorited ". Tout le reste fonctionne bien.Ajouter une classe en cas de succès

Des idées?

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

Répondre

1

Vous devez conserver une copie locale de l'original « ce » afin d'y accéder à partir dans le cadre de la fonction de rappel de succès (ce qui a un autre « ce »).

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

Notes:

  • I ont tendance à préfixer variables d'objet jQuery avec $
  • Votre devrait déclarer toutes vos variables locales avec var ou ils modifier/pollue l'espace de noms global.
+0

Parfait, merci! – ok1ha

Questions connexes