Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Raty在单击事件中设置分数_Javascript_Jquery_Raty - Fatal编程技术网

Javascript jQuery Raty在单击事件中设置分数

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

我正在尝试使用评级插件,但我无法在单击时设置新的分数

我在点击事件上发出一个ajax请求,并获得新的计算分数。我想在点击事件中设置新分数。正确的方法是什么

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