javascript - jQuery:使用 parent()、next() 对单击单选按钮进行样式设置和取消样式设置

标签 javascript jquery html css

我有 3 个相同的部分。它们彼此完全相同。
我想要实现的是,当我点击 ".rad1"(第一个单选按钮) 时,它会为其标签设置样式。
当我点击 ".rad2" 时,它应该取消第一个单选按钮的样式并为第二个单选按钮设置样式。

我只希望它发生在它自己的部分,也就是说,当我点击一个部分时,样式只应用到那个部分,而不是其他部分。

这就是我所拥有的,但我还没有找到实现它的方法:

$('.rad1').click(function() {
    $(this).parent('.label1').css('background', 'red');
});
$('.rad2').click(function() {
    $(this).parent().next('.label1').css('background', 'transparent');
    $(this).parent('.label2').css('background', 'red');
});
.form-section {
background: orange;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-section">
    <form action="">
        <div class="first">
            <label for="radio" class="label1">
                <input type="radio" class="rad1" name="rad">First
            </label>
        </div>
        <div class="second">
            <label for="radio" class="label2">
                <input type="radio" class="rad2" name="rad">Second
            </label>
        </div>
    </form>
</div>
<!------------SECTION-->
<div class="form-section">
    <form action="">
        <div class="first">
            <label for="radio" class="label1">
                <input type="radio" class="rad1" name="rad">First
            </label>
        </div>
        <div class="second">
            <label for="radio" class="label2">
                <input type="radio" class="rad2" name="rad">Second
            </label>
        </div>
    </form>
</div>
<!------------SECTION-->
<div class="form-section">
    <form action="">
        <div class="first">
            <label for="radio" class="label1">
                <input type="radio" class="rad1" name="rad">First
            </label>
        </div>
        <div class="second">
            <label for="radio" class="label2">
                <input type="radio" class="rad2" name="rad">Second
            </label>
        </div>
    </form>
</div>

最佳答案

我会这样做:

$('input[name="rad"]').click(function() {
  $(this).closest('form').find('label').css('background', 'transparent')
  $(this).parent().css('background', 'red');
});

$('input[name="rad"]').click(function() {
  $(this).closest('form').find('label').css('background', 'transparent')
  $(this).parent().css('background', 'red');
});
.form-section {
  background: orange;
  border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-section">
  <form action="">
    <div class="first">
      <label for="radio" class="label1">
        <input type="radio" class="rad1" name="rad">First
      </label>
    </div>
    <div class="second">
      <label for="radio" class="label2">
        <input type="radio" class="rad2" name="rad">Second
      </label>
    </div>

  </form>
</div>
<!------------SECTION-->
<div class="form-section">
  <form action="">
    <div class="first">
      <label for="radio" class="label1">
        <input type="radio" class="rad1" name="rad">First
      </label>
    </div>
    <div class="second">
      <label for="radio" class="label2">
        <input type="radio" class="rad2" name="rad">Second
      </label>
    </div>

  </form>
</div>
<!------------SECTION-->
<div class="form-section">
  <form action="">
    <div class="first">
      <label for="radio" class="label1">
        <input type="radio" class="rad1" name="rad">First
      </label>
    </div>
    <div class="second">
      <label for="radio" class="label2">
        <input type="radio" class="rad2" name="rad">Second
      </label>
    </div>

  </form>
</div>

添加和删除一个类可能比使用 .css() 设置标签样式更好。

关于javascript - jQuery:使用 parent()、next() 对单击单选按钮进行样式设置和取消样式设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276741/

相关文章:

javascript - 为 for 循环添加时间延迟

javascript 将元素添加到 li 标签

javascript - 如何逐渐设置正在(冒泡)排序的元素的样式?

javascript - 打印窗口关闭时清除 div

javascript - 车辆租金计算

javascript - 服务器响应中的 Angular 模板中未定义

javascript - 带有隔离范围的 Angular 双向绑定(bind)似乎是单向的

php - Yii 2,使用 Ajax 提交表单

javascript - jQuery .height() 没有按预期工作

javascript - 如何根据高度在较小的屏幕上滚动粘性菜单