关于DOM事件的一个例子

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>event</title>
    <style>
        .target {
            float: left;
            width: 100px;
            height: 100px;
            background: #359;
        }
        .outer-div {
            display: none;
            float: left;
            width: 150px;
            height: 80px;
            border: 1px solid #888;
        }
        .inner-div {
            float: left;
            width: 80px;
            height: 50px;
            background: #194;
        }
    </style>
</head>
<body>
    <!-- single -->
    <div class="target"></div>
    <div class="outer-div">
        <div class="inner-div"></div>
    </div>

    <!-- // mutil -->
    <ul>
        <li>
            <div class="target"></div>
        </li>
    </ul>
<script type="text/javascript">
    /**
     *    知识点,事件捕获、执行、冒泡
     *    #指定捕获过程发生 
     *        addEventListener(event, func, useCapture) 
     *        useCapture:是否在捕获阶段触发?默认false
     *    #阻止继续捕获
     *        (w3c)
     *        window.captureEvents(Event.eventType) 
     *        window.releaseEvents(Event.eventType)
     *        (IE)
     *        object.setCapture()
     *        object.releaseCapture()
     *    #阻止继续冒泡
     *        event.stopPropagation()、
     *        (IE)event.cancelBubble = true;
     *    #不能冒泡的事件
     *    mouseenter、mouseleave、focus、blur
     */
    
    var timer = null;
    var target = document.querySelector('.target');
    var outer = document.querySelector('.outer-div');
    var inner = document.querySelector('.inner-div');

    inner.addEventListener('click', function(event) { console.log('click inner')}, false);

    target.addEventListener('mouseenter', function(event) {
        openOuter();
    });
    target.addEventListener('mouseleave', closeOuter);

    outer.addEventListener('mouseenter', function(event) {
        console.log('enter outer');
        openOuter();
    });
    outer.addEventListener('mouseleave', function(event) {
        console.log('leave outer');
        closeOuter();
    });
    inner.addEventListener('mouseenter', function(event) { console.log('enter inner'); });
    inner.addEventListener('mouseleave', function(event) { console.log('leave inner'); });

    function openOuter() {
        clearTimeout(timer);
        outer.style.display = 'block';
    }

    function closeOuter() {
        timer = setTimeout(function() {
            outer.style.display = 'none'; 
        }, 200);
    }
</script>
</body>
</html>
 
<!-- single -->
    <div class="target"></div>
    <div class="outer-div">
        <div class="inner-div"></div>
    </div>
原文地址:https://www.cnblogs.com/zhoulingfeng/p/5655496.html