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、以下のコードを試してください(この回答に基づいて変数を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 に答える