Pregunta

Estoy tratando de obtener una función de devolución de llamada Ajax jQuery para actualizar el color de fondo de una celda de tabla, pero no puedo conseguir que funcione.

Tengo el siguiente código (que no produce errores en 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);
});

He añadido la alerta sólo para confirmar que estoy recibiendo los datos esperados de vuelta (un código hexadecimal de 6 dígitos), y yo soy - pero el fondo de mi celda de la tabla se niega obstinadamente a cambiar.

Todas las celdas de la tabla tienen el .tariffdate clase, pero también tienen ID individual.

Como prueba, he intentado crear una función activable para esa clase:

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

Lo anterior funciona bien - así que estoy muy confundido en cuanto a por qué mi función de devolución de llamada no está funcionando. ¿Alguna idea?

¿Fue útil?

Solución

En el AJAX completaron manejador de la instancia de this se cambia al objeto ajax. Tendrá que guardar la instancia de this a un objeto y utilizar ese objeto. Por ejemplo:

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

Otros consejos

Comprobar lo que el "presente" variable está en que la función de devolución de llamada Ajax. Sospecho que no se está refiriendo a .tariffdate

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top