2012-03-08 68 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