晨风

-------------------- 业精于勤,荒于嬉;行成于思,毁于随

导航

js实现的点击div区域外隐藏div区域(转)

Posted on 2016-08-18 09:25  shenyixin  阅读(1625)  评论(0编辑  收藏  举报

首先看下JS的事件模型,JS事件模型为向上冒泡,如onclick事件在某一DOM元素被触发后,事件将跟随节点向上传播,直到有click事件绑定在某一父节点上,如果没有将直至文档的根。

阻止冒泡:

1、stopPropagation()对于非IE浏览器。

2、cancelBubble属性为true,对于IE浏览器,而Jquery已经有兼容浏览器的方法,event.stopImmediatePropagation();

<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" src="js/jquery-1.4.4.min.js">
        </script>
        <title>
        </title>
    </head>
    <style type="text/css">
        body { background-color:#999999; } #myDiv { background-color:#FFFFFF;
        width:250px; height:250px; display:none;       }   
    </style>
    
    <body>
        <input id="btn" type="button" value="显示DIV" />
        <div id="myDiv">
            This is a div;
        </div>
    </body>
    <script type="text/javascript">
            
        var myDiv = $("#myDiv");
        $(function() {
            $("#btn").click(function(event) {
                showDiv(); //调用显示DIV方法
                $(document).one("click",
                function() { //对document绑定一个影藏Div方法
                    $(myDiv).hide();
                });

                event.stopPropagation(); //阻止事件向上冒泡
            });
            $(myDiv).click(function(event) {

                event.stopPropagation(); //阻止事件向上冒泡
            });
        });    
        function showDiv() {
            $(myDiv).fadeIn();
        }
    </script>