jquery onclick单选按钮背景更改

时间:2015-06-17 15:37:29

标签: javascript jquery

我有星级评分系统。请参阅此JsFiddleLink

表格中有五颗星。这是其中之一:

<input type="radio" name="rGroup" value="1" id="r1"/>
<label class="radio" for="r1"></label>

点击星星只会更改背景图像并将星形变为蓝色。

  $(".radio").click(function() {
              $(this).css("background", "url(http://mykadamtala.com/projects/ip/star-blue.png)");
        });

但我想改变它出现的方式。如果用户点击第二颗星,则第一颗和第二颗星的背景图像应该会发生变化,而两颗变为蓝星。如果用户点击第三颗星,左起三颗星将变为蓝色。但不是第四和第五个。

如果用户点击第五颗星,那么所有明星都会变成蓝色。这是因为让他们知道他们给了两星,三星或五星评级。

Jquery也应该处理这个问题:用户点击第三颗星并且左边的所有三颗星变成蓝色,但用户再次点击第二颗星(因为用户可以改变主意)现在它应该显示两颗蓝色星三。

2 个答案:

答案 0 :(得分:3)

试试这段代码:

$(".radio").click(function() {
    var r = $(this).attr('for');
    var input = $("#"+r);
    var input_value = input.val();

    var i;
    for(i=1;i<=5;i++) {
        $("#r"+i).next().css("background", "url(http://mykadamtala.com/projects/ip/star.png)");
    }

    var ii;
    for(ii=1;ii<=input_value;ii++) {
        var ch = "#r"+ii;
        $(ch).next().css("background", "url(http://mykadamtala.com/projects/ip/star-blue.png)");
        $(ch).css("background", "url(http://mykadamtala.com/projects/ip/star-blue.png)");
    }
});

当你得到值= [1,2,3..]时,for循环将从1运行到任何最大值并更改背景。

并且点击时开始比之前少(例如点击5然后点击3)。

答案 1 :(得分:1)

由于您想要多次选择帐户,您只需清空所选内容,然后再次显示。

$(".radio").click(function() {
    var $this = $(this); //Current label
    var $labels = $this.parent().children('label'); //Get all labels
    var num = $this.prev().val(); //Get index of selection

    //Remove all stars
    $labels.css("background", "url(http://mykadamtala.com/projects/ip/star.png)");

    //Set stars
    for(var i = 0; i < num; i++) { 
        $labels[i].style.background = "url(http://mykadamtala.com/projects/ip/star-blue.png)";
    }
});