Плагин запуска Jquery Raty: установить счет для нескольких div

Я использую плагин звездного рейтинга jquery «Raty» https://github.com/wbotelhos/raty. я генерирую набор результатов из базы данных с помощью PHP. что включает в себя счет также. Я хочу установить свойство score для каждого отдельного компонента рейтинга. Как мне это сделать? Я использую этот синтаксис для отображения звезд.

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

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

на одной странице много div с классом «stars_small», сгенерированным динамически. Я хочу установить «счет» для каждого div.


person Jaydev    schedule 28.09.2012    source источник


Ответы (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 с числом, полученным из запроса к базе данных.

person Jaydev    schedule 07.12.2012
comment
Элегантное решение. Raty - хорошая библиотека! - person Arman Bimatov; 07.10.2013
comment
Добавьте запятую после score: function() { return $(this).attr('data-rating'); } - person Emmanuel Osimosu; 10.08.2015

Попробуй это

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

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

Предполагая, что вы сгенерировали с помощью 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]);

    });

});
person MatRt    schedule 28.09.2012

Вот что я сделал:

Я создал отдельный класс для каждого из этих звездных элементов:

<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] }); }

person Ibolit    schedule 23.11.2012

Для V.2.7 Jquery raty имеет вид:

Если вам нужно начать оценку в зависимости от динамического значения, вы можете использовать для этого обратный вызов.

Вы можете передать ему любое значение, не обязательно значение данных. Например, вы можете использовать значение поля.

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

$('div').raty({
    score: function() {
    return $(this).attr('data-score');
  }
});
person Gianfranco Lemmo    schedule 14.04.2015