jQuery - не может установить свойства css в функции обратного вызова ajax - PullRequest
0 голосов
/ 17 мая 2009

Я пытаюсь получить функцию обратного вызова jjery 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, но также имеют индивидуальный идентификатор.

В качестве теста я попытался создать функцию наведения для этого класса:

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

Вышеописанное работает нормально - поэтому я действительно не понимаю, почему моя функция обратного вызова не работает. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 17 мая 2009

В обработчике завершения 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);
      }
   );
});
1 голос
/ 17 мая 2009

Проверьте, какая переменная this в вашей функции обратного вызова ajax. Я подозреваю, что это не относится к .tariffdate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...