首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个选择的jQuery复选框选择

具有多个选择的jQuery复选框选择
EN

Stack Overflow用户
提问于 2014-12-28 03:23:52
回答 1查看 533关注 0票数 0

当我选择2个或更多的复选框时,我的jQuery复选框选择出现了一些问题。我对前端程序还是新的,所以请耐心点。

在一个复选框上选择/取消选择非常有效,但问题在于选择多个选项时:

1)当我选择第一个复选框和另一个第二个复选框时,它给出了除第二个选择之外的所有选择。

2)当我取消选中第二个复选框和第一个复选框时,它会给我所有的选择。

似乎我必须在框上选择两次,这样它才能正确注册,并给我正确的筛选选择。

代码:JSFiddle

HTML

代码语言:javascript
复制
<div class="tags">
<label>
    <input type="checkbox" rel="accounting" />Accounting</label>
<label>
    <input type="checkbox" rel="courier" />Courier</label>
<label>
    <input type="checkbox" rel="project-management" />Project Management</label>
<label>
    <input type="checkbox" rel="video-games" />Video Games</label>
</div>
<ul class="results">
<li class="accounting" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Accounting</a></li>
<li class="courier" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Courier</a></li>
<li class="project-management" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Project Management</a></li>
<li class="video-games" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Video Games</a></li>
</ul>

jQuery

代码语言:javascript
复制
$(document).ready(function () {
$('div.tags').find('input:checkbox').live('click', function () {
    if ($(this).prop("checked")) {
        $('.results > li').toggle('show');
        $('div.tags').find('input:checked').each(function () {
            $('.results > li.' + $(this).attr('rel')).toggle('show');
        });
    } else{
       $('.results > li').show();
    }
});
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-28 04:07:30

这似乎能满足你的需要:

代码语言:javascript
复制
$('div.tags').find('input:checkbox').on('click', function () {
    var vals = $('input:checkbox:checked').map(function () {
        return $(this).attr('rel');
    }).get();
    $('li').hide().filter(function () {
        return ($.inArray($(this).attr('class'), vals) > -1)
    }).show()
    if ($('input:checkbox:checked').length == 0) $('li').show()
});

jsFiddle实例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27673439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档