Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery-复选框保持选中状态-简单筛选系统_Jquery_Html_Forms_Filter_Checkbox - Fatal编程技术网

Jquery-复选框保持选中状态-简单筛选系统

Jquery-复选框保持选中状态-简单筛选系统,jquery,html,forms,filter,checkbox,Jquery,Html,Forms,Filter,Checkbox,我正在构建一个非常简单的过滤系统,在这里我希望有html复选框,可以显示和隐藏特定类别的项目 问题是,无论发生什么情况,复选框都保持选中状态 JSFIDLE上的示例: HTML: 我看过两篇关于这个主题的文章,但不确定它们是否完全相关,或者为什么我的代码不起作用。我也尝试过使用preventdefault函数,但它没有做任何事情: 任何帮助都会得到感激, 谢谢 它正被preventDefault()阻止。看看这个:您可以看到第二个复选框正常工作,而第一个复选框在单击时保持初始状态 似乎pre

我正在构建一个非常简单的过滤系统,在这里我希望有html复选框,可以显示和隐藏特定类别的项目

问题是,无论发生什么情况,复选框都保持选中状态

JSFIDLE上的示例:

HTML:

我看过两篇关于这个主题的文章,但不确定它们是否完全相关,或者为什么我的代码不起作用。我也尝试过使用preventdefault函数,但它没有做任何事情:

任何帮助都会得到感激,
谢谢

它正被
preventDefault()
阻止。看看这个:您可以看到第二个复选框正常工作,而第一个复选框在单击时保持初始状态


似乎
preventDefault()
导致复选框更改操作停止。。。直到现在我才知道!
toggle()
的文档说“实现还调用了事件的.preventDefault()”

它正被
preventDefault()阻止。看看这个:您可以看到第二个复选框正常工作,而第一个复选框在单击时保持初始状态


似乎
preventDefault()
导致复选框更改操作停止。。。直到现在我才知道!
toggle()
的文档中说“该实现也会在事件上调用.preventDefault()”

我不完全确定这样做时为什么会出现错误,但将代码更改为使用“change”可以修复错误


我不能完全确定这样做时为什么会出现错误,但将代码更改为使用“更改”可以修复错误


这里还有另一个解决方案,从复选框值中动态获取类别


这里还有另一个解决方案,从复选框值中动态获取类别


我从不喜欢在选中
的情况下使用
removeAttr
。。。试着省去它()。它的代码更少。

我从不喜欢在选中
的情况下使用
removeAttr
。。。试着省去它()。代码更少。

.toggle()
用于显示/隐藏相关元素

以下是我的解决方案:

.toggle()
用于显示/隐藏相关元素


这是我的解决方案:

你确定你正确使用了切换方法吗?我觉得签名很奇怪!我想知道这是否与以下注释有关:“实现还对事件调用.preventDefault()。我不知道这会阻止默认状态更改操作,但可能确实如此。我只想使用“更改”而不是切换。你确定你正确使用了切换方法吗?签名在我看来很奇怪!我想知道这是否与以下注释有关:“实现还对事件调用.preventDefault()。我不知道这会阻止默认状态更改操作,但可能确实如此。我只会用“改变”而不是切换。先生,给你+1。我不知道toggle()名为preventDefault+先生,祝你好运。我不知道toggle()名为preventDefault!谢谢绝对有用的动态抓取类别。谢谢!动态抓取类别绝对有用。
<ul id="filters">
    <li><input type="checkbox" checked="checked" value="categorya" id="filter-categorya" /><label for="filter-categorya">Category A</label></li>
    <li><input type="checkbox" checked="checked" value="categoryb" id="filter-categoryb" /><label for="filter-categoryb">Category B</label></li>
</ul>

<div class="categorya"></div>
<div class="categorya"></div>
<div class="categorya"></div>
<div class="categorya"></div>
<div class="categoryb"></div>
<div class="categoryb"></div>
<div class="categoryb"></div>
$("#filter-categorya").toggle(
function() {
    $('.categorya').stop().fadeTo('slow', 0.2);
    $('#filter-categorya').removeAttr('checked');
}, function() {
    $('.categorya').stop().fadeTo('slow', 1.0);
    $('#filter-categorya').attr('checked', 'checked');
});

$("#filter-categoryb").toggle(
function() {
    $('.categoryb').stop().fadeTo('slow', 0.2);
    $('#filter-categoryb').removeAttr('checked');
}, function() {
    $('.categoryb').stop().fadeTo('slow', 1.0);
    $('#filter-categoryb').attr('checked', 'checked');
});