javascript - 奇怪的 JavaScript 类型转换

标签 javascript jquery jquery-plugins rating raty

我正在显示特定实体的反馈和评级,该实体最初显示为选项卡。当用户单击选项卡时,我使用

获取反馈和评级
$.get()

$.get()的返回是这样的

some arbit html|||8

我使用 ||| 分割这些数据,并获得评级,在本例中为 8。

        $.get('prevfeed.php',{text:text},function(data){
         data = data.split("|||");

        $('#prevFeedback').html(data[0]);
        $('body').data( 'rating', parseInt(data[1]));
        alert(parseInt(data[1])+1);
    });

问题就出在这里。我正在使用这个plugin显示星级。以下是初始化代码

        $('#star').raty({
        readOnly: true,
        number : 10,
        start:   $('body').data( 'rating')
    }); 

无论我做什么,评级都不起作用。如果我输入一个数字而不是 $('body').data( ' rating') ,它就可以正常工作。

最初,我尝试使用 $('body').data( ' rating') 设置隐藏输入字段的值,然后从输入字段的 val 开始分配。但这没有用。

提前致谢

P.S:查看我编辑代码的答案

        $('#star').raty({
            readOnly: true,
            number: 10,
            start: function() { alert($('body').data('rating'););return $('body').data('rating'); }

当我添加警报时,它正在工作。所以就像我只需要播放这段代码即可。这个怎么做。 });

最佳答案

这是因为您在 body 上设置 rating 属性的代码会被延迟,直到 AJAX 调用完成为止。

但是,您将在页面加载时启动 raty 插件;其中评级数据属性仍然未定义

您必须延迟插件的初始化,直到 AJAX 调用完成:

$.get('prevfeed.php', {
    text: text
}, function(data) {
    data = data.split("|||");

    $('#prevFeedback').html(data[0]);
    $('body').data('rating', parseInt(data[1]));

    $('#star').raty({
        readOnly: true,
        number: 10,
        start: $('body').data('rating')
    });
});​

关于javascript - 奇怪的 JavaScript 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313719/

相关文章:

jquery-ui - 自动完成显示 self.element.propAttr 错误

javascript - 如何有条件地设置组件状态

javascript - 如果 div 边距设置为自动,如何获得以像素为单位的 div 左右边距?

javascript - PDU模式支持[和]字符

javascript - 如何增加日期以及如何在 javascript 中禁用以前的日期?

javascript - 如何设置 animate.css 动画的持续时间?

jQuery 步骤删除操作按钮

jQuery - 父级 "this"

javascript - 将多个 xsl 模板与一个 xml 一起使用

javascript - 表单显示 PHP HTML