Javascript jQuery Raty在单击事件中设置分数
我正在尝试使用评级插件,但我无法在单击时设置新的分数 我在点击事件上发出一个ajax请求,并获得新的计算分数。我想在点击事件中设置新分数。正确的方法是什么Javascript jQuery Raty在单击事件中设置分数,javascript,jquery,raty,Javascript,Jquery,Raty,我正在尝试使用评级插件,但我无法在单击时设置新的分数 我在点击事件上发出一个ajax请求,并获得新的计算分数。我想在点击事件中设置新分数。正确的方法是什么 <div class="rating" data-id="some-int" data-score="0.5"></div> 根据文档,您只需执行$('#selector').raty({score:3})即可设置分数。因此,在回调中,您可以调用$(“.rating”).raty({score:actionResul
<div class="rating" data-id="some-int" data-score="0.5"></div>
根据文档,您只需执行
$('#selector').raty({score:3})
即可设置分数。因此,在回调中,您可以调用$(“.rating”).raty({score:actionResult.Message})
,如下所示:
$(".rating").raty({
score: function () { return $(this).attr("data-score"); },
click: function (score, evt) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "./ajax.asmx/RateImage",
data: "{ ImgId: " + $(this).attr("data-id") + ", Score: " + score + "}",
dataType: "json",
async: false,
success: function (result) { actionResult = result.d; }
});
if (actionResult.Success) {
console.log("Score: " + actionResult.Message);
$(".rating").raty({score: actionResult.Message});
} else { // cancel rating
alert(actionResult.Message);
return false;
}
}
});
有一个内置的方法来设置新分数,因此只需使用:
$('.rating').each(function(i) {
var thisRating = $(this);
thisRating.raty({
score: function () {
return $(this).data('score');
},
click: function (score, evt) {
$.ajax({
type: 'post',
contentType: 'application/json; charset=utf-8',
url: './ajax.asmx/RateImage',
data: {
ImgId: thisRating.data('id'),
Score: score
},
dataType: "json",
success: function (result) {
thisRating.raty('score', result.d.Message);
}
});
return false;
}
});
});
在下面,您将发现:
$('star').raty('score')
获取当前分数。如果没有分数,则未定义将被删除
返回
$('星').raty('分数',数字)
得分
你能行
$(".rating").raty('setScore', score);
看到它工作了吗
当我使用this或$(this).raty({score:actionResult.Message})时;元素重新初始化。所以我不能使用它。@HasanGürsoy元素重新初始化有什么问题?它会丢失所有属性和事件。为什么要使它同步(
async:false
)?为什么不是异步调用?像这样:你看到我链接到的小提琴了吗?@abhitalks我真的不知道异步的细节。如果设置为true,则actionResult未定义。因此,即使结果未完成,ajax块后的代码仍将继续运行。这不是我想要的。要了解更多关于AJAX、Async以及如何使用返回值的信息,请参阅此规范QA:Good to know。非常感谢。我将修复我的代码块;和$(this.raty(“score”,actionResult.Message);已工作,但问题已选定。此代码行后正在设置值。所以我加了returnfalse;以防止进一步的任务。谢谢
$(".rating").raty('setScore', score);