首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据单选按钮状态切换CSS类

根据单选按钮状态切换CSS类
EN

Stack Overflow用户
提问于 2021-03-13 15:27:42
回答 1查看 113关注 0票数 2

我正在开发一个更好的用户界面,并试图实现一种将单选按钮可视化的方法。我得到了下面的代码,这样就可以检查radio button input,并在单击颜色时添加类highlightedBox

如何根据单选按钮状态来管理togglehighlightedBox?现在,toggle在单击时被触发,但是如果用户通过选择另一种颜色决定取消选择颜色按钮,则此解决方案将无法工作。

我知道代码的当前状态只适用于每种颜色的单个更改。如果您想再次选择相同的颜色,则将不会设置选中的值。但这是另一个问题,我稍后会设法解决这个问题。

代码语言:javascript
复制
$('#wireColorSelect #wireBox').click(function(){
        var checkbox = $(this).parent().find(".cbox");
        var wireDOM = $(this).parent().find("#wireBox");
        checkbox.attr('checked', !checkbox.attr('checked'));
        wireDOM.toggleClass('highlightedBox');
    });
代码语言:javascript
复制
.wireBox{
    border: 1px solid;
    height:50px;
    width:50px;
    opacity: 0.5;
}

.white{
    background-color: White;
}

.red{
    background-color: red;
}

.blue{
    background-color: blue;
}

.yellow{
    background-color: yellow;
}

.highlightedBox {
    opacity: 1;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="wireColorSelect">
    <div class="flex-row flex-xs-3">
        <div class="flex-xs-3 no-padding">
            <div id="wireBox" class=" white wireBox"></div>
            <input class="cbox" type="radio" id="whiteWireBox" name="wireBox" value="whiteWireBox" />
        </div>
        <div class="flex-xs-3 no-padding">
            <div id="wireBox" class="red wireBox"></div>
            <input class="cbox" type="radio" id="redWireBox" name="wireBox" value="redWireBox" />
        </div>
        <div class="flex-xs-3 no-padding">
            <div id="wireBox" class="yellow wireBox"></div>
            <input class="cbox" type="radio" id="yellowWireBox" name="wireBox" value="yellowWireBox" />
        </div>
        <div class="flex-xs-3 no-padding">
            <div id="wireBox" class="blue wireBox"></div>
            <input class="cbox" type="radio" id="blueWireBox" name="wireBox" value="blueWireBox" />
        </div>
    </div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-13 15:45:08

您可以使用.not()排除当前用户和removeClass未单击的元素i..div。

演示代码

代码语言:javascript
复制
$('#wireColorSelect .wireBox').click(function() {
  var checkbox = $(this).parent().find(".cbox");
  var wireDOM = $(this)
  checkbox.prop('checked', checkbox.is(":checked") ? false : true);
  wireDOM.toggleClass('highlightedBox');
  //remove checked from other checkboxes
  $(".cbox").not(checkbox).prop('checked', false);
  //remove highlight class from other
  $(".wireBox").not(wireDOM).removeClass("highlightedBox")
});
代码语言:javascript
复制
.wireBox {
  border: 1px solid;
  height: 50px;
  width: 50px;
  opacity: 0.5;
}

.white {
  background-color: White;
}

.red {
  background-color: red;
}

.blue {
  background-color: blue;
}

.yellow {
  background-color: yellow;
}

.highlightedBox {
  opacity: 1;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="wireColorSelect">
  <div class="flex-row flex-xs-3">
    <div class="flex-xs-3 no-padding">
      <div class=" white wireBox"></div>
      <input class="cbox" type="radio" id="whiteWireBox" name="wireBox" value="whiteWireBox" />
    </div>
    <div class="flex-xs-3 no-padding">
      <div class="red wireBox"></div>
      <input class="cbox" type="radio" id="redWireBox" name="wireBox" value="redWireBox" />
    </div>
    <div class="flex-xs-3 no-padding">
      <div class="yellow wireBox"></div>
      <input class="cbox" type="radio" id="yellowWireBox" name="wireBox" value="yellowWireBox" />
    </div>
    <div class="flex-xs-3 no-padding">
      <div class="blue wireBox"></div>
      <input class="cbox" type="radio" id="blueWireBox" name="wireBox" value="blueWireBox" />
    </div>
  </div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66615209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档