jQuery - 如果用户选择了特定复选框,则取消选中其他复选框

Abe*_*ela 0 html javascript checkbox jquery

如果用户选择了特定复选框,我想取消选中当前选中的所有复选框.

例:

<div>
    <label for="foo">
        <input type="checkbox" name="meh" id="foo" checked> foo
    </label>
</div>
<div>
    <label for="bar">
        <input type="checkbox" name="meh" id="bar" checked> bar
    </label>
</div>
<div>
    <label for="foobar">
        <input type="checkbox" name="meh" id="foobar"> foobar
    </label>
</div>
<div>
    <label for="barfoo">
        <input type="checkbox" name="meh" id="barfoo" checked> barfoo
    </label>
</div>
<div>
    <label for="omgwtfbbq">
        <input type="checkbox" name="meh" id="omgwtfbbq"> omgwtfbbq
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

如果用户选择"omgwtfbbq"复选框,我希望取消选中可能检查的所有其他框,并将"omgwtfbbq"作为唯一选中的框.

Aru*_*hny 5

对于label不是id我想你需要for

<div>
    <label for="foo">
        <input type="checkbox" name="foo" id="foo" checked /> foo
    </label>
</div>
<div>
    <label for="bar">
        <input type="checkbox" name="bar" id="bar" checked /> bar
    </label>
</div>
<div>
    <label for="foobar">
        <input type="checkbox" name="foobar" id="foobar" /> foobar
    </label>
</div>
<div>
    <label for="barfoo">
        <input type="checkbox" name="barfoo" id="barfoo" checked /> barfoo
    </label>
</div>
<div>
    <label for="omgwtfbbq">
        <input type="checkbox" name="omgwtfbbq" id="omgwtfbbq" /> omgwtfbbq
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

然后

var $others = $('input[type="checkbox"][name="meh"]').not('#omgwtfbbq')
$('#omgwtfbbq').change(function () {
    if (this.checked) {
        $others.prop('checked', false)
    }
});
$others.change(function () {
    if (this.checked) {
        $('#omgwtfbbq').prop('checked', false)
    }
})
Run Code Online (Sandbox Code Playgroud)

演示:小提琴

注意:我会添加一个公共类的所有投入要素必须加以影响omgwtfbbq和改变var $others = $('#foo, #bar, #foobar, #barfoo'),以var $others = $('.myclassoninput')