【发布时间】:2011-08-08 00:04:47
【问题描述】:
我正在构建一个非常简单的过滤系统,我希望在其中拥有可以显示和隐藏特定类别项目的 html 复选框。
问题是复选框始终处于选中状态。
jsfiddle 示例:http://jsfiddle.net/Jmnwr/
HTML:
<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>
JS:
$("#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');
});
我看过两篇关于这个主题的帖子,但不确定它们是否完全相关,或者为什么我的代码特别不起作用。我也尝试过使用 preventdefault 功能,但它没有做任何事情:
Unable to control checkbox checked status - jquery Why won't .attr('checked','checked') set?
任何帮助总是很感激, 谢谢!
【问题讨论】:
-
你确定你正确使用了切换方法吗,我觉得签名很奇怪!
-
我想知道它是否与此注释有关:“实现还调用事件上的 .preventDefault()”。不知道这会阻止默认状态更改操作,但也许确实如此。我只会使用“更改”而不是切换。
标签: jquery html forms filter checkbox