【问题标题】:Radio button change text on click CSS jQuery单击 CSS jQuery 时单选按钮更改文本
【发布时间】:2018-10-15 09:17:41
【问题描述】:

目前我正在尝试在单击单选按钮时更改文本颜色。这是有效的,但只要选择另一个,它就必须改回来。无论我在尝试什么,我都无法让它工作。我认为这是解决问题的最佳方法。

这是我当前使用的代码:(单选按钮)

<div class="checkboxes">
<label class="container"><div class="checkboxcijfer">1</div>
  <input type="radio" name="radio">
  <span class="checkmark"></span>
</label>

<label class="container"><div class="checkboxcijfer">2</div>
  <input type="radio" name="radio">
  <span class="checkmark"></span>
</label>

jQuery(我已经删除了所有我尝试过的东西。我遵循了一个教程,他们还删除了兄弟姐妹的类。不幸的是,这不起作用。这会使项目的颜色发生变化:

    $(function() {
    $('.container [type="radio"]').on('change', function() {

        $(this).prev().addClass('red')

    });
    });

还有简单的 CSS:

.white
        {
            color: #FFF;
        }

So here is how it currently works

And this is what's going wrong when clicking away.

【问题讨论】:

  • 我完全不确定这个逻辑是如何工作的。您的单选按钮没有 prev() 可以找到的先前兄弟。
  • @Taplar,在那种情况下它不会通过 DOM 吗?
  • 不,prev() 是前一个兄弟选择器api.jquery.com/prev 它是横向的,而不是向上的 dom

标签: jquery html css button radio


【解决方案1】:

找到类.red的元素,并删除该类:

$(function() {
  $('.container [type="radio"]').on('change', function() {
    $('.red').removeClass('red');
    $(this).prev().addClass('red')

  });
});
.red {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkboxes">
  <label class="container">
    <div class="checkboxcijfer">1</div>
    <input type="radio" name="radio">
    <span class="checkmark"></span>
  </label>

  <label class="container">
    <div class="checkboxcijfer">2</div>
    <input type="radio" name="radio">
    <span class="checkmark"></span>
  </label>
</div>

如果您可以切换inputdiv,则可以使用adjacent sibling selector 获得纯CSS 解决方案:

input:checked + .checkboxcijfer {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkboxes">
  <label class="container">
    <input type="radio" name="radio">
    <div class="checkboxcijfer">1</div>
    <span class="checkmark"></span>
  </label>

  <label class="container">
    <input type="radio" name="radio">
    <div class="checkboxcijfer">2</div>
    <span class="checkmark"></span>
  </label>
</div>

【讨论】:

  • 太棒了。非常感谢。为这么一件小事花费了这么多时间。这似乎很合乎逻辑,并且有效。不知道看到这个后我的大脑在想什么。再次感谢。
  • 我对 CSS 进行了同样的尝试。只是不知道我必须更改 div 和输入的位置。很高兴下次知道。
  • 您的设计非常适合纯 CSS 解决方案,因为无论如何输入都是隐藏的。换个地方就行了。
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多