gpt4 book ai didi

javascript - 如何在选中另一个复选框时取消选中一组复选框

转载 作者:行者123 更新时间:2023-11-30 10:28:45 25 4
gpt4 key购买 nike

我在我正在开发的网站上创建了一个搜索功能,但我被卡在了这一部分。搜索功能有一个类别列表,用户可以选中或取消选中这些类别以过滤项目。这些选项几乎与 Coursera 的方式相同已经实现了他们的搜索功能。我想在选中 All Categories 选项时取消选中所有其他复选框,并在未选中任何其他选项时取消选中 All Categories 复选框。这听起来有点令人困惑,但这正是该网站所实现的。

代码示例如下:

<div class="filter-grade">
<label class="checkbox">
<input type="checkbox" id="grade-all" name="grade[]" value="0" checked><b>All Grades</b>
</label>
<label class="checkbox">
<input type="checkbox" id="grade-9" name="grade[]" value="9">Grade 9
</label>
<label class="checkbox">
<input type="checkbox" id="grade-10" name="grade[]" value="10">Grade 10
</label>
<label class="checkbox">
<input type="checkbox" id="grade-11" name="grade[]" value="11">Grade 11
</label>
<label class="checkbox">
<input type="checkbox" id="grade-12" name="grade[]" value="12">Grade 12
</label>
</div>

最佳答案

尽管有我的评论,但我构建了一个 fiddle :http://jsfiddle.net/ctnCn/5/

$('.group input').on('change', function() {
var $inputs = $(this).siblings('input').add(this),
$checked = $inputs.filter(':checked'),
$all = $inputs.eq(0),
index = $inputs.index(this);

(index === 0 ? $checked : $all).removeAttr('checked');

if(index === 0 || $checked.length === 0) {
$all.attr('checked', 'checked');
}
});

针对特定项目进行更新:http://jsfiddle.net/ctnCn/6/

$('.filter-grade input').on('change', function() {
var $inputs = $(this).closest('div').find('input'),

虽然我想指出这不是标签元素的标准用法。我建议更改您的标记,使标签和输入成为 sibling (并使用“id”和“for”属性来链接它们)。看看这个引用:http://www.w3schools.com/tags/tag_label.asp我之前的 fiddle 也提供了标准标记约定的示例。

关于javascript - 如何在选中另一个复选框时取消选中一组复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18217588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com