Как обновить значение raty

Я использую плагин jquery raty, есть событие click, которое я использую для отправки данных рейтинга и затем возврата нового рейтинга из базы данных, но я не могу понять, как обновить возвращенный рейтинг, мой код:

    $('.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);

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

3 ответа

Решение

Пытаться $(this).raty({ score: 2 }); в соответствии с рати документы

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

PPS Little 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);
            });
        }
    });

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

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

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

   //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, попробуйте код ниже (на основе этого ответа Передача переменных в 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);
    });
}

ПРИМЕЧАНИЕ. Ни один из этих кодов не был протестирован.

Другие вопросы по тегам