2

次のコードを使用して、チェックボックスでいくつかの div をフィルタリングしようとしています。

$("#filterControls :checkbox").click(function() {
  $(".sectionContent").hide();
  $("#filterControls :checkbox:checked").each(function() {
    $("." + $(this).val()).show();
  });
  if($("#filterControls :checkbox").prop('checked') == false){
    $(".sectionContent").show();
  }
});

これは、最初のチェックボックスをオンにすると正常に機能しますが、最初のチェックボックスも選択した場合にのみ、他のものでフィルタリングされます。説明するのは難しいですが、JSFiddle を試してみてください: http://jsfiddle.net/BY9JL/

最初のチェックボックスがオンになっていることに依存したくないのですが、これを回避する方法はありますか?

4

2 に答える 2

5

試す

var sections = $('.sectionContent');
function updateContentVisibility(){
    var checked = $("#filterControls :checkbox:checked");
    if(checked.length){
        sections.hide();
        checked.each(function(){
            $("." + $(this).val()).show();
        });
    } else {
        sections.show();
    }
}

$("#filterControls :checkbox").click(updateContentVisibility);
updateContentVisibility();

デモ:フィドル

于 2013-05-02T10:58:39.380 に答える
3

これは、最後の if チェックがオンになっているかどうかにかかわらず、最初のチェックボックスのみをチェックするためです。

最後の if ブロックを変更して、チェックされているものがあるかどうかを確認できます。

if($("#filterControls :checkbox:checked").length == 0){
    $(".sectionContent").show();
}
于 2013-05-02T10:55:01.447 に答える