Как обновить значение 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);
});
}
ПРИМЕЧАНИЕ. Ни один из этих кодов не был протестирован.