通过复选框缩小显示的内容
Narrowing displayed content by checkbox
我希望修改这段代码,以便显示的结果具有所有复选框的值。例如,在"电脑"answers"视频游戏"中,我只能得到结果3。
我该如何做这个改变?
<div class="tags">
<label><input type="checkbox" rel="arts" /> Arts </label>
<label><input type="checkbox" rel="computers" /> Computers </label>
<label><input type="checkbox" rel="health" /> Health </label>
<label><input type="checkbox" rel="video-games" /> Video Games </label>
</div>
<ul class="results">
<li class="arts computers">
Result 1
</li>
<li class="video-games">
Result 2
</li>
<li class="computers health video-games">
Result 3
</li>
<li class="arts video-games">
Result 4
</li>
</ul>
$('div.tags').delegate('input:checkbox', 'change', function()
{
var $lis = $('.results > li').hide();
//For each one checked
var numChecked = $('input:checked').each(function()
{
$lis.filter('.' + $(this).attr('rel')).show();
}).length;
if (!numChecked) $lis.show();
});
http://jsfiddle.net/gZUrA/2/您可以获得选中名称的数组,并使用它来创建调用.filter()
的选择器。
$('div.tags').delegate('input:checkbox', 'change', function() {
var checkedNames = $('div.tags input:checkbox:checked').map(function() { return $(this).attr('rel'); }).get();
if (checkedNames.length > 0) {
var selector = '.' + checkedNames.join('.');
$('.results > li').hide().filter(selector).show();
} else {
$('.results > li').show()
}
});
jsfiddle
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 缩小后的大图像上的Jcrop圆形选择显示预览选择区域中的全尺寸图像
- 缩小显示/隐藏
- 使 Google 地图在显示指定位置时自动缩小更多
- 通过复选框缩小显示的内容
- 必应地图 v8 - 缩小地图时,信息框未显示在预期位置
- 如何使用Cordova在缩略图中显示缩小尺寸的图像