1

我正在使用 jquery raty 在 php 中进行评分页面,其中显示了多个评分。它工作正常,除非一件事。得分功能和点击功能工作正常。但是我在尝试为每个元素设置目标时遇到问题。我想要的是在悬停在每颗星上时显示评级选择。它应该在带有“star_hint”类的 div 中显示提示,但事实并非如此。

每个元素都显示在一个 div 中,如下所示:

<div class="span4">
   <h4>First valoration</h4>
   <div class="star" data-number="3"></div>                                         
   <input type="hidden" class="score_value" />                                  
   <div class="star_hint"></div>
</div>

<div class="span4">
   <h4>Second valoration</h4>
   <div class="star" data-number="4"></div>                                         
   <input type="hidden" class="score_value" />                                  
   <div class="star_hint"></div>
</div>
etc....

脚本是这样的:

$('.star').raty({
    target: $(this).next('.star_hint'),
    score: function() {
        return $(this).attr('data-number');  // set default value 
    },
    click: function(score) {
        $(this).next().val(score);  // save clicked value in hidden input
        GetAverageNote();  // calculates average note from all ratys
    }
});

我不能使用 id 作为目标,因为每个明星项目都有不同的目标。我还尝试在函数中返回值,例如 score 和 click ,但它不起作用。像那样:

target: function() {
    $(this).next('.star_hint');
   }

有人对如何使这项工作有想法吗?

4

2 回答 2

3

您可以循环遍历所有span需要绑定divraty()方法,然后tid作为变量传递以进行设置raty({target:tid})

Rate <span id="star_xxx" data-number="3" rel="#hint_xxx" ></span>  <span  id="hint_xxx">   </span>

$( document ).ready(function() {
$('span[id^="star"]').each(function(){
    var tid = $(this).attr('rel'); 
    $(this).raty({
        target : tid ,
        starOff : '/img/star-off.png', 
        starOn : '/img/star-on.png'     

}) 
}) 


});
于 2013-05-08T16:26:40.737 回答
2

html

<div class="star" data-score="2.6"></div><span class="hint"></span> 

js

$(function () {
     $('div[class^="star"]').each(function(){
        $(this).raty({
            readOnly:true,
            score: function() {return $(this).attr('data-score');},
            }) 
            $(this).next().text($(this).attr('data-score'));
        });
    });
于 2013-10-22T12:25:47.193 回答