关于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>
时间: 2024-08-15 13:19:16

关于DOM事件的一个例子的相关文章

HTML DOM 事件(实现一个简单的回到顶部功能)

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序.事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 利用onscroll事件写一个回到顶部功能,代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" c

web前端入门到实战:HTML DOM 事件(实现一个简单的回到顶部功能)

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序.事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 利用onscroll事件写一个回到顶部功能,代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" c

从click事件理解DOM事件流

事件流是用来解释页面上的不同元素接受一个事件的顺序,首先要明确两点: 1.一个事件的影响元素可能不止一个(同心圆理论),但目标元素只有一个. 2.如果这些元素都绑定了相同名称的事件函数,我们怎么知道这些函数的运行顺序?于是有了事件流的概念(事件捕捉,事件冒泡) 举个例子: <div id="outer"> <p id="inner">Click me!</p> </div> 为了看起来方便,先无视CSS样式,那么蓝色的

整理之DOM事件阶段、冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件

整理之DOM事件阶段 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的DOM事件流.都是流的一种生动体现.用术语说流是对输入输出设备的抽象.以程序的角度说,流是具有方向的数据. 事件流分事件冒泡与事件捕获 在浏览器发展的过程中,开发团队遇到了一个问题.那就是页面中的哪一部分拥有特定的事件? 可以想象画在一张纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的其

你真的了解DOM事件么?

你真的了解DOM事件么? 我们大家都知道,人与人之间的交流可以通过语言,文字,肢体动作,面部微表情等,但是你知道Javascript和HTML之间是通过什么进行交互的么?你又知道Javascript和HTML之间是如何进行交互的么?如果你不是那么清楚,可以看这篇文章... 前面的话: 这篇博文由浅入深,先介绍两种事件流,然后介绍常见的事件处理程序以及它们之间的差异(涉及到一个简单的兼容的处理函数),后面还会针对事件对象进行深入学习,最后则是通过DOM事件实现的小案例. 事件流: 关于事件流,简单

JavaScript学习总结【10】、DOM 事件

DOM 事件是 JS 中比较重要的一部分知识,所谓事件,简单理解就是用户对浏览器进行的一个操作.事件在 Web 前端领域有很重要的地位,很多重要的知识点都与事件有关,所以学好 JS 事件可以让我们在JS的学习道路中更进一步. 1.事件流 事件流描述的是从页面中接受事件的顺序.但是 IE 和 Netscape 开发团队提出了两个截然相反的事件流概念,IE 的事件流是事件冒泡流,而 Netscape 的事件流是事件捕获流. (1).事件冒泡 事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的

关于DOM 事件流的三个阶段

一丶 流 什么是流? 比如 react 中的单项数据流,Node.js 中的流,或者本文中的 DOM 事件流,都是流的具体体现.专业地讲,流是程序输入或输出的一个连续的字节序列:通俗地讲,流是有方向的数据. 二丶 事件流 什么是事件流? 假想一下,现在有一组同心圆,你把手指在最里面的圆心上,与此同时,你也正在指着外层的其他同心圆.假设最里面的圆是 DOM 中的一个按钮,那就是说,你点击按钮这个元素的同时,也点击了他的所有父级元素.那么这个点击事件 DOM 要怎么处理呢?事实上,这个点击事件并非只

DOM事件简介

Click.touch.load.drag.change.input.error.risize — 这些都是冗长的DOM(文档对象模型)事件列表的一部分.事件可以在文档(Document)结构的任何部分被触发,触发者可以是用户操作,也可以是浏览器本身.事件并不是只是在一处被触发和终止:他们在整个document中流动,拥有它们自己的生命周期.而这个生命周期让DOM事件有更多的用途和可扩展性. 作为一个开发人员,我们必须要理解DOM事件是如何工作的,然后才能更好的驾驭它,利用它们潜在的优势,开发出

DOM事件与jQuery事件的是非纠葛

在javascript和JQuery之中,都有事件的处理方式,在我们编写程序实现某些功能的时候,我们会发现使用原生的DOM事件与JQuery中封装的事件都能实现同样的效果,那么也许我们会认为他们之间的区别不是很大,甚至说基本没有区别.这种观点是错误的,其实在事件函数的底层设计时,他们赋予元素的事件属性是通过不同的事件绑定机制来实现的. 我们先从表面理解:我们都知道,JQuery是javascript的一个函数库,他是基于javascript原生设计的.就是说JQuery中的事件,都是通过java