2012-03-08 48 views
0

JSFIDDLE检查所有的div都隐藏

$(document).ready(function() { 
    $(".chk").click(function() { 
     $(".chk:checked").each(function() { 
      $("."+this.id).show(); 
     });  
     $(".chk:not(:checked)").each(function() { 
      $("."+this.id).hide(); 
     }); 
     // give a message if nothing left to show  
    }); 
}); 

<label> 
    <input class="chk" type="checkbox" checked="checked" id="course">Courses 
</label> 
<label> 
    <input class="chk" type="checkbox" checked="checked" id="morning">Morning 
</label> 
<label> 
    <input class="chk" type="checkbox" checked="checked" id="evening">Evening 
</label> 
<ul> 
    <li class="courseBox course">Course</li> 
    <li class="courseBox course evening">Course, Evening</li> 
    <li class="courseBox morning">Morning </li> 
</ul>​ 

如何最优雅的知道,如果所有受影响的div被隐藏?


UPDATE:如果你需要一个淡出后检查,你需要把支票回调:

$(".chk:not(:checked)").each(function() { 
    $("."+this.id).fadeOut(function() { 
    if (!$('.courseBox:visible').length) { 
     alert('all are hidden'); 
    } 
    }); 
}); 
+2

你不信任.show()和.hide()? – j08691 2012-03-08 20:27:25

+1

@ j08691:它在的jsfiddle清晰。每个复选框隐藏某些元素。由于类重叠,所有的元素都可以在未选中所有复选框之前隐藏。 – 2012-03-08 20:34:45

回答

0

你可以试试这个:

$('ul').find(':hidden').length 

这会给你是隐藏的“UL”下的元素个数

2

您需要:visible选择:

if ($('div:visible').length == 0) alert('no more divs!'); 
+0

得改变“格”,以“礼” ...... @mplugjan使用列表元素......但是,这样做的工作,也 – 2012-03-08 20:33:01

+0

哦。我只是在回答他的问题:“我怎么最优雅地知道所有受影响的div是否都隐藏了?”。不需要为这个简单的事情看一个jsfiddle。 – 2012-03-08 20:34:10

+0

对上...是啊...它扔我,太...我用的jsfiddle搞砸,它不能正常工作...笑 – 2012-03-08 20:35:47

2

计数可见li元素:

if ($('ul li:visible').length == 0) { 
    alert("Everything is gone!") 
} 

更多信息:

:visible selector

+0

+1! – 2012-03-08 20:38:30

0

您的代码可以简化 如下。

$(document).ready(function() { 
    $(".chk").click(function() { 
     $("." + this.id).toggle(this.checked); 
     if($(".courseBox:visible").length == 0){ 
      alert("All divs are hidden"); 
     } 
    });   
}); 

工作演示 - http://jsfiddle.net/ShankarSangoli/JrAhR/13/

+0

@mplungjan - 你在找什么? – ShankarSangoli 2012-03-08 20:41:56

+0

你可以检查你的代码吗?它看起来像它最初的作品,但在取消选中和检查后,路口不再起作用。我的初始代码正确处理交集 – mplungjan 2012-03-09 06:12:38

+0

刚刚测试过你的小提琴。它不检查后正常工作 – mplungjan 2012-03-09 09:15:21