我试图得到一个jQuery的Ajax回调函数来更新表格单元格的背景颜色,但我不能得到它的工作。

我有以下代码(其产生在萤火虫没有错误):

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

我已经添加了警报只是为了确认我收到预期的数据传回(6位十六进制代码),而我 - 但我的表格单元格的背景顽固地拒绝改变。

所有表格单元具有类.tariffdate但也有个别ID。

作为试验,我试图创建该类的悬停功能:

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

在上面正常工作 - 所以我,为什么我的回调函数不能正常工作真的很困惑。任何想法?

有帮助吗?

解决方案

在AJAX完成处理程序this的实例被改变到AJAX对象。你需要this的实例保存到一个对象,并使用该对象。例如:

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

其他提示

检查“这个”变量是在你的AJAX回调函数什么。我怀疑它是不是指.tariffdate

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top