2009-05-17 19 views
0

jquery ajaxコールバック関数を使用してテーブルセルの背景色を更新しようとしていますが、動作させることができません。jQuery - ajaxコールバック関数でCSSプロパティを設定できません

私は(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'); 
}); 

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

答えて

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); 
     } 
    ); 
}); 
+0

あなたはスターです。これが問題でした。ありがとう! – BrynJ

1

"this"変数があなたのajaxコールバック関数内にあるか確認してください。私はそれが.tariffdateを参照していないと思われます。

関連する問題