zoukankan      html  css  js  c++  java
  • 对象this、currentTarget和target

    在事件处理程序内部,对象this始终等于currentTarget的值,而target则只包含事件的实际目标。如果直接将事件处理程序指定给了目标元素,则this、currentTarget和target包含相同的值。来看下面的例子:

    var btn = document.getElementById("myBtn");
    btn.onclick = function (event) {
        alert(event.currentTarget === this); //ture
        alert(event.target === this); //ture
    };

    这个例子检测了currentTarget和target与this的值。由于click事件的目标是按钮,一次这桑格值是相等的。如果事件处理程序存在于按钮的父节点中,那么这些值是不相同的。再看下面的例子:

    document.body.onclick = function (event) {
        alert(event.currentTarget === document.body); //ture
        alert(this === document.body); //ture
        alert(event.target === document.getElementById("myBtn")); //ture
    };

    当单击这个例子中的按钮时,this和currentTarget都等于document.body,因为事件处理程序是注册到这个元素的。然而,target元素却等于按钮元素,以为它是click事件真正的目标。由于按钮上并没有注册事件处理程序,结果click事件就冒泡到了document.body,在那里事件才得到了处理。

    在需要通过一个函数处理多个事件时,可以使用type属性。例如:

    var btn = document.getElementById("myBtn");
    var handler = function (event) {
            switch (event.type) {
            case "click":
                alert("Clicked");
                break;
            case "mouseover":
                event.target.style.backgroundColor = "red";
                bread;
            case "mouseout":
                event.target.style.backgroundColor = "";
                break;
            }
        };
    btn.onclick = handler;
    btn.onmouseover = handler;
    btn.onmouseout = handler;
  • 相关阅读:
    解构操作的使用
    【Spring Boot】spring boot环境配置
    【Java】windows下直接运行Java程序(利用bat运行jar文件)
    【JavaScript】数学计算的函数与数字的格式化
    【python】控制台python代码导出成exe文件
    【centOS】centOS安装图形界面
    【网站】python的Windows平台的扩展包
    【Django】(4)创建其他页面
    【Django】(3)创建网页:学习笔记主页
    【Django】(2)Django模块创建应用程序
  • 原文地址:https://www.cnblogs.com/IT-Monkey/p/3328083.html
Copyright © 2011-2022 走看看