2010年4月2日 星期五

透過 jQuery 如何知道哪些元素目前是被隱藏的

透過 jQuery 將某個物件隱藏,只需下 hide() 指令即可。但如果畫面有太多物件在做類似動作,你要怎麼讓程式去知道目前哪些物件是顯示/隱藏?

舉例來說:下圖我有兩個 Div-A, Div-B 。如果我壓了 【hide A】按鈕後,Div-A 就被我隱藏了。但我希望壓下 【Show Status】按鈕後,顯示出兩個 Div 的狀態。

遇到這種狀況時,可以善用 jQuery 的 .is( ) 方法來處理。它會比對你所提供的條件,並回傳 ture 或 false。在這個範例中,就可以使用 .is(:hidden) 或 .is(:visible) 來處理。


if($("#A").is(":hidden") )
{
 .
 .
 .
}


範例程式:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>未命名頁面</title>
    <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
    <script>
        function HideA()
        {
            $("#A").hide();
        }
        
        function ShowStatus()
        {
            var vMsg='';
            if($("#A").is(":hidden") ) { vMsg+='DivA is hidden \n';} else {vMsg+='DivA is visible \n';}
            if($("#B").is(":hidden") ) { vMsg+='DivB is hidden \n';} else {vMsg+='DivB is visible \n';}
            
            $("#Msg").html(vMsg.replace(/\n/g,"<BR>"));
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="A" style="border-width:1; border-color:Black; background-color:Aqua; width:250px">Div-A</div>
    <div id="B" style="border-width:1; border-color:Black; background-color:Green; width:250px">Div-B</div>
    <input type="button" value="hide A" onclick="HideA();" />
    <input type="button" value="Show Status" onclick="ShowStatus();" />
    <div id="Msg"></div>
    </div>
    </form>
</body>
</html>


執行結果:


參考:http://groups.google.com/group/jquery-en/browse_thread/thread/f243d091f1b9590b?pli=1

沒有留言:

張貼留言