0

我正在尝试获取一个 jquery ajax 回调函数来更新表格单元格的背景颜色,但我无法让它工作。

我有以下代码(在 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);
});

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

所有表格单元格都有 .tariffdate 类,但也有单独的 ID。

作为测试,我尝试为该类创建一个悬停函数:

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

以上工作正常 - 所以我真的很困惑为什么我的回调函数不起作用。有任何想法吗?

4

2 回答 2

2

在 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);
      }
   );
});
于 2009-05-17T17:46:12.740 回答
1

检查 ajax 回调函数中的“this”变量是什么。我怀疑它不是指 .tariffdate

于 2009-05-17T17:45:16.233 回答