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 桁の 16 進数コード) が返されていることを確認するためだけにアラートを追加しましたが、テーブル セルの背景が頑固に変更を拒否しています。

すべての表のセルにはクラス .tariffdate がありますが、個別の ID もあります。

テストとして、そのクラスのホバー機能を作成してみました。

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

上記は正常に動作するため、コールバック関数が機能しない理由について本当に混乱しています。何か案は?

4

2 に答える 2

2

AJAX の完了ハンドラーでは、のインスタンスがthisajax オブジェクトに変更されます。のインスタンスをオブジェクトに保存し、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 に答える