jQuery動態顯示Div,按Div以外的地方就隱藏Div

  • 40283
  • 0

jQuery動態顯示Div,按Div以外的地方就隱藏Div

Dotblogs 的標籤: ,

同事的進度落後太多,只好一直寫範例。這個範例很簡單,就按一個超連結就顯示 Div,按 Div 中的【關閉】鈕或 Div 以外的地方就隱藏,當然也是用 jQuery 處理。

    <head>
        <title></title>
        <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js"></script>
    </head>
    <script type="text/javascript">
        $(function(){
            $("#divShow").hide();
            
            $('body').click(function(evt) {
                if($(evt.target).parents("#divShow").length==0 && 
                    evt.target.id != "aaa" && evt.target.id != "divShow") {
                    $('#divShow').hide();
                }
            });
        });
    </script>
    <body>
    <a id="aaa" name="aaa" onclick="$('#divShow').show();" href="#">按這裡就顯示Div</a>
        <div id="divShow" name="divShow" style="width: 500px; height: 350px;border-width:2px; border-style:dotted;">
        <input type="button" id="btnCloseDiv" name="divCloseDiv" value="關閉" onclick="$('#divShow').hide();" />
        <p>this is a div.</p>
        <table id="tbl" style="width: 300px; height: 300px; border:#0000FF 1px solid; ">
            <tr><th>thhhhhhhhhhhhhhh</th></tr>
            <tr><td>tddddddddddddddd</td></tr>
        </table>
        </div>
    </body>
</html>

重點其實有三點:

1. 因為動態顯示、隱藏的 Div (divShow)裡面還有其他標籤,所以我們利用:

找到滑鼠點擊到的目標物件,其上層是否包含 divShow,若有,表示我們點擊的是 Div 中的項目,所以保留顯示 Div。

2. 若點擊的是 Div 本身,那也要保留顯示,所以在隱藏動作之前的判斷要排除自己:

3. 若點擊的是用來顯示 Div 的超連結,當然也不要把 Div 給隱藏起來:

為了方便識別,固定加框線和顏色,顯示 Div 的畫面如下:

183537

滑鼠點擊黑色框線以外的地方,Div 就會隱藏,點擊黑色框線內的任何地方,都會保留顯示 Div。按【關閉】鈕,也會隱藏 Div。

--------
沒什麼特別的~
不過是一些筆記而已