Jquery Raty开始插件:为多个div设置得分

时间:2012-09-28 04:27:54

标签: php jquery raty

我正在使用jquery星级评级插件“Raty”https://github.com/wbotelhos/raty。 我正在使用PHP从数据库生成结果集。这也包括得分。我想为每个评级组件设置分数属性。我怎样才能做到这一点? 我使用这种语法来显示星星。

$('.stars_small').raty({
      readOnly : true,
      half  : true,
      score : 2,
      space : false
 });  

<div class="stars_small"></div>

在单个页面中有许多div,动态生成类“stars_small”。我想为每个div设置“得分”。

5 个答案:

答案 0 :(得分:5)

$('.stars_small').raty({
             readOnly : true,
             half  : true,
             score: function() {
                      return $(this).attr('data-rating');
                     }
              space : false
         });  

这对我来说很好。 该插件会在每个div中添加一个隐藏的文本框,其中class="stars_small" 像这样

<div class="stars_small">
     <input type="hidden" name="score" value="3.5" readonly="readonly">
</div>

所以我只是设置value属性,其数字来自数据库查询。

答案 1 :(得分:0)

试试这个

   $('.stars_small').each(function() {

         $(this).raty({
                    readOnly : true,
                    half  : true,
                    score : 2,
                    space : false
              }); 
        });

答案 2 :(得分:0)

假设您使用PHP生成了JS行:

// lines of JS generated with a loop in PHP (for the rate content)
var rates = [];
rates.push({...one rate coming from PHP...});
rates.push({...one rate coming from PHP...});
// etc...

您可以通过以下方式运行评级星:

$(document).ready(function() {

    $(".starts_small").each(function(index, element) {

        $(this).raty(rates[index]);

    });

});

答案 3 :(得分:0)

这就是我所做的:

我为每个明星div创建了一个单独的类:

<div class="star s0"></div>
<div class="star s1"></div>
<div class="star s2"></div>

我还在模板中生成值数组(即,将值从我的服务器端脚本传递到网页)。像这样:

var array = new Array(2.4, 2.9, 5.0);

然后我在$(".star")调用中声明所有三个“星标”的常见内容,并在一个周期中设置值:

$('.star').raty({
    half : true
});

for (i = 0; i < array.length; i++) { $('.s' + i).raty({ score:array[i] }); }

答案 4 :(得分:0)

对于V.2.7,Jquery raty的格式为:

如果你需要根据动态值开始得分,你可以使用回调。

您可以为其传递任何值,不一定是数据值。例如,您可以使用字段值。

<div data-score="1"></div>

$('div').raty({
    score: function() {
    return $(this).attr('data-score');
  }
});