我有以下脚本来显示课程的评分。但它正好适用于显示5颗星的分页第一页,当它显示第二页时显示10颗星。代码如下,
<div class="ft-item">
<div class="rating_<?php echo $row->courseId;?>">
</div>
<script>
$('.rating_<?php echo $row->courseId;?>').raty({
starOff : '<?php echo base_url()?>public/images/star/icon-star-2.png',
starOn : '<?php echo base_url()?>public/images/star/icon-star-1.png',
starHalf: '<?php echo base_url()?>public/images/star/icon-star-3.png',
readOnly : true,
half : true,
score : <?php echo $r;?>,
space : true
});
</script>
在本课程中,五颗星正在显示并位于第一页。
在本课程中,有10颗星显示并位于第二页。
以上脚本是否在第二页中没有绑定?
答案 0 :(得分:0)
当你通过ajax调用分页时,你需要在success
函数中的ajax响应之后调用你的脚本。但问题是你的分数需要特定于每本书/项目,你需要更改
score : <?php echo $r;?>
和
$('.rating_<?php echo $row->courseId;?>')
并通过score
而不是javascript
获取php
,并将该功能移至ajax
成功。现在要从javascript
获取数据并删除php
,您需要使用data
属性为此目的添加评级,如data-rating=<?=r?>
,通过php填充html,然后使用.each
并迭代所有元素并通过data-rating
在javacript
中获取相应的$(element).data('rating')
属性并分配给费率选项。您可以看到下面的示例如何根据您需要复制此JavaScript的数据属性来填充评级,并相应地更新您的HTML,并且您已完成。
$('.rating').each(function() {
var ele = $(this);
$(ele).raty({
starOff: 'https://cdnjs.cloudflare.com/ajax/libs/raty/2.8.0/images/star-off.png',
starOn: 'https://cdnjs.cloudflare.com/ajax/libs/raty/2.8.0/images/star-on.png',
starHalf: 'https://cdnjs.cloudflare.com/ajax/libs/raty/2.8.0/images/star-half.png',
readOnly: true,
half: true,
score: ele.data('rating'),
space: true
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/raty/2.8.0/jquery.raty.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/raty/2.8.0/jquery.raty.js"></script>
<div class="ft-item">
<div class="rating" data-rating="3"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="4"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="2"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="1"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="5"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="4"></div>
</div>
<div class="ft-item">
<div class="rating" data-rating="4"></div>
</div>