Domanda

Sto cercando di ottenere una funzione di callback ajax jquery per aggiornare il colore di sfondo di una cella di tabella, ma non riesco a farlo funzionare.

Ho il seguente codice (che non produce errori in 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);
});

Ho aggiunto l'avviso solo per confermare che sto ricevendo i dati attesi (un codice esadecimale a 6 cifre), e lo sono, ma lo sfondo della cella della mia tabella si rifiuta ostinatamente di cambiare.

Tutte le celle della tabella hanno la classe .tariffdate ma hanno anche un ID individuale.

Come test, ho provato a creare una funzione hover per quella classe:

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

Quanto sopra funziona bene, quindi sono davvero confuso sul motivo per cui la mia funzione di richiamata non funziona.Qualche idea?

È stato utile?

Soluzione

Nel gestore AJAX completato l'istanza di this viene modificato nell'oggetto ajax.Dovrai salvare l'istanza di this a un oggetto e utilizzare quell'oggetto.Per esempio:

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

Altri suggerimenti

Verifica a quanto il "questo" variabile è in voi funzione di callback ajax. Ho il sospetto che non è facendo riferimento alla .tariffdate

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top