jQuery评级系统

时间:2011-08-10 22:11:27

标签: php jquery mysql

我正在尝试从0开始制作评级系统,到目前为止,我有两个班级开关,共有5个星级,

它会显示该项目的评级,直到该人在它们上方悬停,然后它会使之前的星星变暗并隐藏当前的评级,

<div id="stars">
<div class="on"></div>
<div class="on"></div>
<div class="on"></div>
<div class="off"></div>
<div class="off"></div>
</div>
到目前为止我得到的JS

$('#stars').mouseover(function() {
        $(this).children().prevAll().andSelf().attr('class', 'on');  
    $(this).nextAll().attr('class', 'on');  
    });

只有hilights所有的开始和混乱一切,任何人都可以帮忙吗?工作太多时间,无法让它工作..

谢谢!

4 个答案:

答案 0 :(得分:3)

如果您在点击之前将其用作预览,那么您可能希望使用这样的悬停功能:

$('#stars .star').hover(
    function() {
        $(this).prevAll().andSelf().addClass('on');
        $(this).nextAll().removeClass('on');
    },
    function() {
        $(this).parent().children().removeClass('on');
    }
);

这与jsFiddle中的HTML有关,你可以看到它的工作原理:http://jsfiddle.net/jfriend00/aRTzQ/

我还建议使用addClass()removeClass()而不是直接操作属性,因为它可以让您更灵活地在对象上创建其他类,并且更具可读性。

要点击粘贴以便然后记住该设置,您可以使用以下内容:http://jsfiddle.net/jfriend00/QxADg/。相应的CSS / HTML就是小提琴。

$('#stars .star').hover(
    function() {
        $(this).prevAll().andSelf().addClass('preview');
        $(this).nextAll().removeClass('preview');
    },
    function() {
        $(this).parent().children().removeClass('preview');
    }
);

$('#stars .star').click(function() {
    $(this).parent().children().removeClass('on');
    $(this).prevAll().andSelf().addClass('on');
});

$('#stars').hover(
    function() {$(this).addClass("inPreview");},
    function() {$(this).removeClass("inPreview");}
);

答案 1 :(得分:2)

那里有很多插件,比如一个PPrice链接到。我同意其他人认为,除非由于某种原因无法满足您的需求,否则这将是更好的方式。

如果您想让这段代码正常工作,或者您只是为了学习而这样做,那么这可能就是您要做的事情吗?

您可以将鼠标悬停在“星星”(方框)上以查看颜色变化。

http://jsfiddle.net/pW3Sn/

$('#stars > div').mouseover(function() {
        $(this).prevAll().andSelf().attr('class', 'on');  
        $(this).nextAll().attr('class', 'off');  
});

答案 2 :(得分:1)

实际上你可以使用纯CSS实现它。

HTML code:

<div id="stars">
    <div class="star">
        <div class="star">
            <div class="star">
                <div class="star">
                    <div class="star"></div>
                </div>
            </div>
        </div>
    </div>
</div>

和CSS:

#stars {
    height: 16px; /* height of stars block */
}
#stars .star {
    height: 16px; /* height of one star */
    padding-left: 16px; /* width of one star */
    background-image: url('http://url.to.your.star.image');
    float: left;
}
#stars .star:hover, 
#stars .star :hover {
    background-position: 0px -16px; /* toggle image */
}

一个工作示例:http://jsfiddle.net/4CfzD/

答案 3 :(得分:0)

为什么不使用某人的插件?例如http://www.fyneworks.com/jquery/star-rating/