1

我正在使用jquery raty 插件,有一个单击事件用于发送评级数据,然后从数据库返回新评级,但我无法弄清楚如何更新返回的评级,我的代码:

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

谢谢你的帮助。

4

3 回答 3

2

$(this).raty({ score: 2 });根据比率文档尝试

PS如果您还需要设置数据属性,您可以试试这个:$(this).raty({ score: 2 }).attr('data-rating', 2);

PPS 小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);
            });
        }
    });
于 2013-03-26T13:56:54.847 回答
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);
    });
}

注意:此代码均未经过测试。

于 2013-12-09T15:38:51.437 回答
0

对此有一些麻烦,这对我有用:

$('.rating').raty('score', score);
于 2016-04-27T12:44:34.193 回答