我正在显示特定实体的反馈和评级,该实体最初显示为选项卡。当用户单击选项卡时,我使用
获取反馈和评级$.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/