Pergunta

Eu estou tentando obter uma função jquery ajax chamada de retorno para atualizar a cor de uma célula da tabela de fundo, mas não posso fazê-lo funcionar.

Eu tenho o seguinte código (que produz nenhum erro no 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);
});

Eu adicionei o alerta apenas para confirmar que estou recebendo a parte de trás de dados esperado (um código hexadecimal de 6 dígitos), e eu sou - mas o fundo da minha célula da tabela se recusa teimosamente a mudança.

Todas as células da tabela têm o .tariffdate classe, mas também têm ID individual.

Como um teste, eu tentei criar uma função de foco para essa classe:

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

A obras acima bem - então eu estou realmente confuso sobre o porquê minha função de retorno não está funcionando. Alguma idéia?

Foi útil?

Solução

No AJAX concluída manipulador a instância do this é alterada para o objeto ajax. Você vai precisar para salvar a instância do this a um objeto e usar esse objeto. Por exemplo:

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

Outras dicas

Verifique qual a "isto" variável está em você ajax função de retorno. Eu suspeito que ele não está se referindo a .tariffdate

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top