jQueryのは - AJAXコールバック関数でCSSプロパティを設定することはできません

StackOverflow https://stackoverflow.com/questions/875073

質問

私はテーブルのセルの背景色を更新するために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');
});

上記が正常に動作します - 私は私のコールバック関数が機能していない理由としては本当に困惑しています。任意のアイデア?

役に立ちましたか?

解決

は、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