Question

Je suis en train d'obtenir une fonction de rappel ajax jquery pour mettre à jour la couleur de fond d'une cellule de table, mais je ne peux pas le faire fonctionner.

Je le code suivant (qui ne produit pas d'erreurs dans Firebug):

$(".tariffdate").click(function () {
   var property_id = $('#property_id').attr("value");
   var tariff_id = $('#tariff_id').attr("value");
   var tariff_date = $(this).attr("id");
   $.post("/admin/properties/my_properties/booking/edit/*", { property_id: property_id, tariff_id: tariff_id, tariff_date:  tariff_date },
function(data){
   var bgcol = '#' + data;
   $(this).css('background-color',bgcol);
   alert("Color Me: " + bgcol);
});

J'ai ajouté l'alerte juste pour confirmer que je reçois le dos des données attendues (un code hexadécimal à 6 chiffres), et je suis - mais le fond de ma cellule de table refuse obstinément de changer.

Toutes les cellules du tableau ont la .tariffdate de classe, mais aussi l'identification individuelle.

En tant que test, j'ai essayé de créer une fonction de vol stationnaire pour cette classe:

$(".tariffdate").hover(function () {
   $(this).css('background-color','#ff0000');
});

Les travaux ci-dessus bien - donc je suis vraiment confus quant à la raison pour laquelle ma fonction de rappel ne fonctionne pas. Toutes les idées?

Était-ce utile?

La solution

Dans le gestionnaire terminé AJAX l'instance de this est changé à l'objet ajax. Vous devez enregistrer l'instance de this à un objet et utiliser cet objet. Par exemple:

$(".tariffdate").click(function () {
   var property_id = $('#property_id').attr("value");
   var tariff_id = $('#tariff_id').attr("value");
   var tariff_date = $(this).attr("id");
   var tariff = $(this);
   $.post("/admin/properties/my_properties/booking/edit/*", 
      { property_id: property_id, tariff_id: tariff_id, tariff_date:  tariff_date },
      function(data) {
         var bgcol = '#' + data;
         tariff.css('background-color',bgcol);
         alert("Color Me: " + bgcol);
      }
   );
});

Autres conseils

Vérifiez que la variable « ceci » est en vous fonction de rappel ajax. Je pense qu'il ne se réfère pas à .tariffdate

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top