JQuery隐藏了当前元素之外的所有元素

时间:2013-11-12 14:58:43

标签: javascript jquery

我有4个街区,每当我按下其中一个时,里面会出现一个复选框。如果我点击另一个块,当前复选框将消失,另一个复选框将出现,这是好的。问题是,如果我点击一个块并出现复选框,当我按下该复选框时,该块将消失,它不应该。

我有以下HTML代码:

<div class="item">1 <input class="hidden" type="checkbox"></div>
<div class="item">2 <input class="hidden" type="checkbox"></div>
<div class="item">3 <input class="hidden" type="checkbox"></div>
<div class="item">4 <input class="hidden" type="checkbox"></div>

以下css代码:

.hidden {
    display: none;
}

和javascript代码:

$(".item").click(function(){     
    $(".item").find('input').hide();                    
    $(this).find('input').show('fast');
});

我可以做些什么来隐藏除当前复选框之外的所有复选框(我点击的块)?

2 个答案:

答案 0 :(得分:5)

像这样使用.not()过滤器

$(".item").click(function(){     
    $(".item").not(this).find('input').hide();                    
});

编辑:

您可能想要考虑用户是否想要改变主意,并重新启用所有选项。你可以这样做:

$(".item").click(function(){     
    var items = $(".item").not(this).find('input');
    if($('input',this).is(':checked')) items.hide();
    else items.show();                
});

http://jsfiddle.net/r8yBd/

答案 1 :(得分:1)

尝试

$(".item").click(function(){     
    $(".item").find('input').addClass('hidden');                    
    $(this).find('input').removeClass('hidden');
});