【问题标题】:How do I uncheck a jquery checkbox and have the remaining checkbox'd results still available?如何取消选中 jquery 复选框并使剩余的复选框结果仍然可用?
【发布时间】:2013-05-04 16:58:24
【问题描述】:

正如您在链接中看到的那样,当您取消选中“所有游戏”时,所有结果都将隐藏,即使仍有复选框选中并显示必要的列表结果。

当我取消选中所有游戏复选框时,我试图避免删除所有结果。

DEMO HERE

HTML:

<div id="left-col">
    <h1>Options</h1>

    <div>
        <input name="action-areas[]" id="areas_all" value="4" class="type_check" type="checkbox">
        <label for="areas_all">ALL GAMES</label>
    </div>
    <div>
        <input name="action-areas[]" id="areas_2D" value="0" class="type_check" type="checkbox">
        <label for="areas_2D">2D</label>
    </div>
    <div>
        <input name="action-areas[]" id="areas_3D" value="1" class="type_check" type="checkbox">
        <label for="areas_3D">3D</label>
    </div>
    <div>
        <input name="action-areas[]" id="areas_mobile" value="2" class="type_check" type="checkbox">
        <label for="areas_mobile">Mobile</label>
    </div>
    <div>
        <input name="action-areas[]" id="areas_multiplayer" value="3" class="type_check" type="checkbox">
        <label for="areas_multiplayer">Multiplayer</label>
    </div>
</div>



<div id="right-col">
<h1>List items</h1>
    <ul id="case-studies">
        <li  class="type_hidden areas_all areas_2D">Super Mario Bros.</li>
        <li  class="type_hidden areas_all areas_3D">StarFox</li>
        <li  class="type_hidden areas_all areas_2D areas_mobile">Angry Birds</li>
        <li  class="type_hidden areas_all areas_multiplayer areas_3D">de_dust</li>
        <li  class="type_hidden areas_all areas_2D">Limbo</li>
        <li  class="type_hidden areas_all areas_2D areas_3D areas_mobile">Doom</li> 
    </ul>
</div>

javascript:

    $(document).ready(function(){
    $("input.type_check").attr("checked", "true").click(function() {
        if($(this).is(':checked')) {
            $("#case-studies li."+$(this).attr('id')).removeClass('type_hidden');
            $("#case-studies li").not(".type_hidden, .start_hidden").slideDown();
        } else {
            $("#case-studies li."+$(this).attr('id')).addClass('type_hidden');
            $("#case-studies li."+$(this).attr('id')).slideUp();
        }
    });

    $("input.start_check").attr("checked", "").click(function(){
        if($(this).is(':checked')) {
            $("#case-studies li."+$(this).attr('id')).removeClass('start_hidden');
            $("#case-studies li").not(".type_hidden, .start_hidden").slideDown();
        } else {
            $("#case-studies li."+$(this).attr('id')).addClass('start_hidden');
            $("#case-studies li."+$(this).attr('id')).slideUp();
        }
    });
});

【问题讨论】:

  • 取消选中所有结果复选框会发生什么情况?
  • 只有没有正确分类的结果才会消失。在这种情况下,没有一个会消失,因为 2D、3D、移动和多人游戏仍处于选中状态。

标签: javascript jquery list filter


【解决方案1】:

试试

$(document).ready(function(){

    var parts = $("input.type_check:not(#areas_all)");

    parts.click(function() {
        if($(this).is(':checked')) {
            $("#case-studies li." + this.id).removeClass('type_hidden').slideDown();
        } else {
            var cls = parts.filter(':checked').map(function(){
                return '.' + this.id;
            }).get();
            $("#case-studies li").not(cls.join(',')).addClass('type_hidden').slideUp();;
        }
    });

    $('#areas_all').click(function(){
        parts.prop('checked', this.checked).each(function(){
            $(this).triggerHandler('click')
        })
    }).prop('checked', true).triggerHandler('click')

});

演示:Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多