jQuery可見性過濾器

可見性篩選器
可見性篩選器根據元素的可見性和不可見性來選擇對應的元素。

##  回傳   #:hidden  $(':hidden')選取所有不可見元素 集合元素 :visible   $(':visible')選取所有可見元素 集合元素   
濾鏡名稱   jQuery 語法說明     
##########################

$('p:hidden).size(); //元素p 隱藏的元素

#$('p:visible').size(); //元素p 顯示的元素

注意::hidden 過濾器一般是包含的內容為:CSS 樣式為display:none、input 表單類型為type="hidden"和visibility:hidden 的元素。

範例
jQuery的可見性選擇器是根據元素的可見和不可見狀態來選擇相對應的元素。主要有兩個:可見:visible和不可見:hidden。今天我們主要來學習這兩個選擇器的使用。先來看一個HTML結構,方便學習這兩個選擇器的使用:

<div class="wrap">
 <span></span>
 <div></div>
 <div style="display:none">Hider!</div>
 <div style="visibility:hidden">Hider!</div>
 <div class="startHidden">Hider!</div>
 <div class="startVisibilityHidden">Hider!</div>
 <div></div>
 <form>
  <input type="hidden" />
  <input type="hidden" />
  <input type="hidden" />
 </form>
 <span></span>
 <button>显示隐然元素</button>
</div>

CSS 

<style type="text/css">
 .wrap {
   width: 500px;
   padding: 10px;
   margin: 20px auto;
   border: 1px solid #ccc;
 }
  
 .wrap div {
  width: 70px;
  height: 40px;
  background: #0083C1;
  margin: 5px;
  float: left
 }
 
 span {
  display: block;
  clear: left;
  color: #008000;
 }
 
 .startHidden {
  display: none;
 }
 
 .startVisibilityHidden {
  visibility: hidden;
 }
</style>

初步效果

2016041920020736.png

##在下面我們分別來看看這兩個選擇器的語法和使用規則以及所起的作用

一、不可見性選擇器::hidden

選擇器

# $("E:hidden") //E表示元素標籤


  或


$(":hidden") //選擇所有隱藏元素


描述:

E:hidden表示選擇隱藏的E元素,而:hidden表示選取所有不可見的元素

傳回值:

集合元素

實例:

$(document).ready(function(){

$("span:first").text("Found " + $(":hidden", document.body).length + " hidden elements total.");//在第一個span標籤中增加文本,顯示body中有多少個元素隱藏
$("div:hidden").show(" 3000");//顯示所有隱藏的div元素
$("span:last").text("Found " + $("input:hidden").length + " hidden inputs");//在最後一個span標籤中增加文本,顯示有多少input隱藏
});

功能:

":hidden"選取所有不可見的元素,有的瀏覽器還包含了<header>內所有標籤,而且這裡所指的不可見元素是樣式為“display:none”和表單“type="hidden"”兩種,而不包含“visibility:hidden”的隱藏元素。另外提醒大家,「:hidden」有的會導致選擇中<header>內所有標籤,所以建議前面加個元素標籤。

效果:

1.png

二、可見性選擇器::visible

選擇器:

$(" E:visible") //E是指元素標籤,選擇指定的可見元素標籤


  或


$(":visible")//選擇所有可見元素


 

描述:

「E:visible」表示選擇可見的E元素,比如說「$("div:visible")」表示選擇所有可見的div元素,而「$(":visible")」表示選擇所有可見元素

傳回值:

集合元素

##實例:

<script type="text/javascript">
$(document).ready(function(){
  $("div:visible").click(function(e){ //可見DIV元素綁定一個單擊事件
$(this).css("border","2px solid red"); //給可見的DIV元素增加一個2px的紅色邊框
e.stopPropagation( );//停止事件冒泡
  });
  $("button").click(function(e){ //為button綁定一個點選事件
$("div:hidden ").show("fast").css("background","re​​d");//隱然的元素顯示出來,並把背景變成紅色
e.stopPropagation();//停止事件冒泡
});
 });
</script>

#功能:

上面第一段程式碼是滑鼠點選可見的DIV元素後,該元素會增加一個2px紅色邊框的樣式,而第二段程式碼是點選按鈕會顯示所有隱藏的元素,並加上紅色背景色。這裡所指的可見元素和我們前面隱藏元素一樣,只是沒有被「display:none」或「.hide()」隱藏的元素。

效果:


2.png

#最後再說一點:「:visible」過濾出所有可見元素,但是這裡的可見是指沒有被「display:none」或使用「.hide()「函數隱藏的元素;」:hidden「是選擇所有隱藏元素。同樣,這裡所謂隱藏,不是指」visibility:hidden“,而是指”display:none“或”type="hidden"“的form元素。

有關於jQuery的可見性過濾選擇器就簡單介紹到這裡了,有興趣的朋友可以在本地測試一下,這樣可能加強對他們的理解。


繼續學習
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>05-可见性过滤选择器.html</title> <!-- 引入jQuery --> <script src="http://code.jquery.com/jquery-3.1.1.min.js"></script> <link rel="stylesheet" type="text/css" href="./css/style.css" /> <script type="text/javascript"> $(document).ready(function(){ //<input type="button" value=" 选取所有可见的div元素" id="b1"/> $("#b1").click(function(){ $("div:visible").css("background","red"); }); //<input type="button" value=" 选取所有不可见的元素, 利用 jQuery 中的 show() 方法将它们显示出来" id="b2"/> $("#b2").click(function(){ $("div:hidden").show(1000); }); //<input type="button" value=" 选取所有的文本隐藏域, 并打印它们的值" id="b3"/> $("#b3").click(function(){ var $input=$("input:hidden"); //显示迭代.. // for(var i=0;i<$input.length;i++){ // $inputp[i] // // } //隐式迭代 $input.each(function(index,doc){ //alert(index) //alert(doc.value); // doc.val(); // 转换成jQuery 对象在调用 alert($(doc).val()); }) }); }); </script> </head> <body> <h3>可见性过滤选择器.</h3> <button id="reset">手动重置页面元素</button> <input type="checkbox" id="isreset" checked="checked"/><label for="isreset">点击下列按钮时先自动重置页面</label> <br/><br/> <input type="button" value=" 选取所有可见的div元素" id="b1"/> <input type="button" value=" 选取所有不可见的元素, 利用 jQuery 中的 show() 方法将它们显示出来" id="b2"/> <input type="button" value=" 选取所有的文本隐藏域, 并打印它们的值" id="b3"/> <br /><br /> <div class="one" id="one" > id为one,class为one的div <div class="mini">class为mini</div> </div> <div class="one" id="two" title="test" > id为two,class为one,title为test的div. <div class="mini" title="other">class为mini,title为other</div> <div class="mini" title="test">class为mini,title为test</div> </div> <div class="one"> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini">class为mini</div> <div class="mini" title="tesst">class为mini,title为tesst</div> </div> <input type="hidden" value="hidden_1"> <input type="hidden" value="hidden_2"> <input type="hidden" value="hidden_3"> <input type="hidden" value="hidden_4"> <div style="display:none;" class="none">style的display为"none"的div</div> <div class="hide">class为"hide"的div</div> <span id="mover">正在执行动画的span元素.</span> <!-- Resources from http://down.liehuo.net --> </body> </html>