javascript - 基于单选按钮更新元素的CSS样式

标签 javascript html css radio-button

我编写了 10 个单选按钮,它们的工作原理基本上类似于星级评分。我想要做的是有另外 10 个类似按钮的圆形元素,它们根据按下的单选按钮进行更新。例如,如果按下第 9 个单选按钮,我只想突出显示第一个类似按钮的圆形元素(更改它的 css 类)。或者,如果按下第 5 个按钮,那么我希望更新第 5 个圆形元素。

我到处寻找类似的东西,比如可能使用一个值来显示星星,但我似乎找不到任何我特别想做的事情。我将不胜感激。

基本上我的单选按钮看起来像这样(实际代码中有十个按钮,但在这里浓缩为三个按钮):

  <div class="points">
      <span><input type="radio" name="amount_offered" id="point3" value="3"> 
          <label for="point3">3</label></span>
      <span><input type="radio" name="amount_offered" id="point2" value="2"> 
          <label for="point2">2</label></span>
      <span><input type="radio" name="amount_offered" id="point1" value="1"> 
          <label for="point1">1</label></span>
  </div>

其他的圆形按钮是这样的:

<div class="pointskeep"> 
    <span><id="point3keep"><label>3</label></span>
    <span><id="point2keep"><label>2</label></span>
    <span><id="point1keep"><label>1</label></span>
</div>

我的 CSS 代码如下:

    .points span label {
        border-radius:50%;
        color:black;
        background:white;
    }
    .points span:hover ~ span label,
    .points span:hover label,
    .points span.checked label,
    .points span.checked ~ span label {
        background:goldenrod;
        color:white;
    }

    .pointskeep span label {
        border-radius:50%;
        background:goldenrod;
        color:white;
        }
    .pointskeep span.checked label,
    .pointskeep span.checked ~ span label {
        color:black;
        background:white;
    }

我的 js 看起来像这样:

 $(document).ready(function(){

        // Check Radio-box
        $(".points input:radio").attr("checked", false);

        $('.points input').click(function () {
            $(".points span").removeClass('checked');
            $(".nopoints span").removeClass('checked');
            $(this).parent().addClass('checked');

        });

我一直在摆弄 javascript,但我似乎无法弄清楚如何在单击适当的 radio 元素时将非 radio 元素更新为它们的“选中”css 样式。有更好的方法吗?

最佳答案

试试这个:-

$(document).ready(function () {
    $('input').click(function () {
        $('input:not(:checked)').parent().removeClass("checked");
        $('input:checked').parent().addClass("checked");
    });    
});
.points span label {
        border-radius:50%;
        color:black;
        background:white;
    }
    .points span:hover ~ span label,
    .points span:hover label,
    .points span.checked label,
    .points span.checked ~ span label {
        background:goldenrod;
        color:white;
    }

    .pointskeep span label {
        border-radius:50%;
        background:goldenrod;
        color:white;
        }
    .pointskeep span.checked label,
    .pointskeep span.checked ~ span label {
        color:black;
        background:white;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="points">
      <span><input type="radio" name="amount_offered" id="point3" value="3"/> 
          <label for="point3">3</label></span>
      <span><input type="radio" name="amount_offered" id="point2" value="2"/> 
          <label for="point2">2</label></span>
      <span><input type="radio" name="amount_offered" id="point1" value="1"/> 
          <label for="point1">1</label></span>
  </div>

<div class="pointskeep"> 
    <span><id="point3keep"><label>3</label></span>
    <span><id="point2keep"><label>2</label></span>
    <span><id="point1keep"><label>1</label></span>
</div>

关于javascript - 基于单选按钮更新元素的CSS样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51257938/

相关文章:

javascript - 滑动 slider - 拇指画廊与 SlideToClickedSlide 无法正常工作

javascript - Angular 6 表单在提交和重置后返回验证错误

html - Chrome 中不显示背景图片

javascript - 更改日期格式(Javascript/Angular)

javascript - 在 iframe 中单击按钮时从输入字段加载网页

html - 在页面内时图像显示异常大

javascript - Web API - Controller 设计

javascript - 在knockoutjs中使列表项的内部HTML可点击

html css 导航栏列表进入屏幕

css - 为什么背景图片不显示?