0

我有两组单独的单选按钮,我希望它的“div”颜色在选择时改变。我想要的行为很简单,如果选择了单选按钮,相应的 div 应该改变颜色。(如果取消选择,则更改回其原始颜色)。

但是,问题是如果另一个集合中的单选按钮被选中,即使其中一个单选按钮仍处于选中状态,第一个集合的 div 也会变回其原始颜色。我该如何解决?

在此处查看演示

使用的jQuery:

$(document).ready(function(){
    $('input:radio').change(function(){
        $('div.highlight').removeClass('highlight');
        $(this).closest('div').addClass('highlight');
    });
});
4

2 回答 2

2

对于第二个问题,您需要将块的输入包装到单独的包装器中并更改一些代码..

JS

$(document).ready(function(){
    $('input:radio').change(function(){
        var $this = $(this);
        // Only remove the class in the specific `box` that contains the radio
        $this.closest('.box').find('div.highlight').removeClass('highlight');
        $this.closest('.q').addClass('highlight');
    });
});

HTML

<div class="box"> 1st set
    <div class="q">
        <input type="radio" id="1" name="11" />
        <label for 1>a</label>
    </div>
    <div class="q">
        <input type="radio" id="2" name="11" />
        <label for 2>b</label>
    </div>
</div>
<div class="box">
    <hr> 2nd set
    <div class="q">
        <input type="radio" id="3" name="22" />
        <label for 3>a</label>
    </div>
    <div class="q">
        <input type="radio" id="4" name="22" />
        <label for 4>b</label>
    </div>
</div>

检查小提琴

于 2013-07-31T23:09:26.283 回答
1

不是 jQuery,但您可以查看 css 规则(嵌套很重要: div.highlight 和 radio 需要是兄弟姐妹):

下面的 Dabblet 示例

div.entry {
    position: relative;
    padding: 8px;
    width: 50%;
}
div.entry div.highlight {
    background-color: #fff;
    position: absolute;
    z-index: -1;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
}
div.entry input:checked ~ div.highlight {
    background-color: orange;
}

<div class="entry">
    <input type="radio" name="list" />This is one option
    <div class="highlight"></div>
</div>
<div class="entry">
    <input type="radio" name="list" />This is another option
    <div class="highlight"></div>
</div>
<div class="entry">
    <input type="radio" name="list" />This is a third option
    <div class="highlight"></div>
</div>
于 2013-07-31T23:40:15.290 回答