2013-03-26 2 views
1

Я использую jquery raty plugin, есть click event, который я использую для отправки тарификационных данных, а затем вернуть новый рейтинг из базы данных, но я не могу понять, как обновить возвращенный рейтинг, мой код:Как обновить значение Räty

$('.starrating').raty({ 
      number:10, 
      score: function() { 
        return $(this).attr('data-rating'); 
       }, 
      click: function(score, evt) { 
       var contentid = $(this).attr('id'); 
       $.post('/main/rating.php',{score:score, contentid:contentid }, 
         function(data){ 
          //alert(data+' Score = '+score); 
          $(this).data('rating',2); 
       }); 
      } 
      }); 

Я пробовал с нижним, но без успеха;

$(this).data('rating',2); 

Спасибо за любую помощь.

+0

Устанавливая '$ .fn.data' вы только настройки кэша JQuery данные, связанные с элементом. Даже атрибут реальных данных –

ответ

2

Попробуйте $(this).raty({ score: 2 }); согласно Räty Docs

P.S. если вам необходимо установить атрибут данных, вы можете попробовать следующее: $(this).raty({ score: 2 }).attr('data-rating', 2);

P.P.S. Небольшое обновление click события для обработки правых множества элементов

$('.starrating').raty({ 
    number:10, 
    score: function() { 
     return $(this).attr('data-rating'); 
    }, 
    click: function(score, evt) { 
     var target = $(this), 
      contentid = target.attr('id'); 

     $.post('/main/rating.php',{score:score, contentid:contentid }, 
      function(data){ 
       target 
        .raty({ 
         score: data.score 
        }) 
        .attr('data-rating', data.score); 
      }); 
     } 
    }); 
+0

У меня уже есть это, я должен динамически обновлять значение рейтинга. – user969068

+0

@dshah Вы должны поместить этот код в обратный вызов '$ .post' –

+0

Хорошо Спасибо. Это работает, но не с $ (this), а с именем элемента $ ('. Starrating'), и мне нужно повторно добавить все параметры в .raty ({params}) в callabck, это не очень эффективный способ, но поскольку другого пути я не могу найти, спасибо, что он решил. – user969068

0

на основе ваших комментариев по поводу ваших параметров сбрасываются, я добавил некоторые идеи ниже.

//SET RATY DEFAULTS 
     $.fn.raty.defaults.path = 'img'; 
     $.fn.raty.defaults.cancel = true; 
     //etc 

В вашей функции успеха сбросьте рейтинг с новыми данными. Только указанные опции будут переопределены.

$(this).raty('set', { option: value }); 

Например, обновление оценка

$(this).raty('set', { score: 2 }); 

Если у вас возникли проблемы с this, попробуйте следующий код (на основании этого ответа Passing variables through to AJAX)

$.fn.raty.defaults.click= function(score, evt) 
{ 
    var target = $(this), 
    contentid = target.attr('id'); 
    postvalue(score,target, contentid); 
} 

function postvalue (score,target, contentid) 
{ 
    $.post('/main/rating.php',{score:score, contentid:contentid }, 
    function(data) 
    { 
     target.raty({score: data.score}).attr('data-rating', data.score); 
    }); 
} 

Примечание: None этого кода.

0

Если бы некоторые проблемы с этим, это работает для меня:

$('.rating').raty('score', score);