事件绑定

作者: 杰克_王_ | 来源:发表于2019-10-20 14:11 被阅读0次
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>事件绑定</title>
    <style>
        div {
            border: 5px red solid;
            margin-bottom: 5px;
        }

        button {
            margin-bottom: 5px;
        }
    </style>
</head>

<body>
    <button onclick="handlerClick()">通过 onclick 属性直接绑定事件</button>
    <br>
    <button id="btn">通过 id 获取html元素,使用 onclick 属性绑定事件</button>
    <br>

    <div id="parentDelegate">
        <button data-event="event1">用事件委托的方式绑定事件1</button>
        <button data-event="event2">用事件委托的方式绑定事件2</button>
        通过 id 获取父级元素的方式绑定事件
    </div>

    <div class="parentDelegate">
        <button data-event="event1">用事件委托的方式绑定事件1</button>
        <button data-event="event2">用事件委托的方式绑定事件2</button>
        通过 class 获取父级元素的方式绑定事件
    </div>
    <br>
</body>

<script>
    function handlerClick() {
        console.log("--------handlerClick--------");
        console.log(this);
        console.log(Array.from(arguments));
    }

    document.getElementById("btn").onclick = handlerClick;

    // 事件委托,利用冒泡原理,把事件添加到父元素上,触发执行

    // 1. 通过ID获取父级元素的方式绑定事件
    document.getElementById("parentDelegate").addEventListener("click", function (e) {
        // debugger;
        console.log("--------parentDelegate for ID--------");
        console.log("this: ", this.valueOf());

        console.log('arguments:', Array.from(arguments).valueOf());

        var target = e.target,
            attributeName = "data-event",
            defaultAttributeValue = "";
        console.log("event target: ", e.target);

        /*
        es6中的${}——用于字符串拼接
        https://blog.csdn.net/weixin_43207791/article/details/82740557
        */
        var attributeValue = target.getAttribute(attributeName) || defaultAttributeValue;
        switch (attributeValue.toLowerCase()) {
            case "event1":
                console.log(`${attributeValue}被点击`)
                break;
            case "event2":
                console.log(`${attributeValue}被点击`)
                break;
            default:
                console.log("父级元素或未知子元素被点击")
                break;
        }

        console.log("");
    });

    // 2. 通过class获取父级元素的方式绑定事件
    for (const parent of document.getElementsByClassName("parentDelegate")) {
        parent.addEventListener("click", function (e) {
            // debugger;
            console.log("--------parentDelegate for class--------");
            console.log("this: ", this.valueOf());

            console.log('arguments:', Array.from(arguments).valueOf());

            var target = e.target,
                attributeName = "data-event",
                defaultAttributeValue = "";
            console.log("event target: ", e.target);

            /*
            es6中的${}——用于字符串拼接
            https://blog.csdn.net/weixin_43207791/article/details/82740557
            */
            var attributeValue = target.getAttribute(attributeName) || defaultAttributeValue;
            switch (attributeValue.toLowerCase()) {
                case "event1":
                    console.log(`${attributeValue}被点击`)
                    break;
                case "event2":
                    console.log(`${attributeValue}被点击`)
                    break;
                default:
                    console.log("父级元素或未知子元素被点击")
                    break;
            }

            console.log("");
        });
    }
</script>

</html>

相关文章

  • JS 事件监听、事件委托2018-07-10

    //常规的事件绑定只执行最后绑定的事件 //使用事件监听绑定事件 //可以绑定多个事件 //语法element.a...

  • JS-事件绑定

    一、addEventListener : 事件绑定另外一种绑定事件的方法。优点:可以绑定多个事件,之后绑定的事件...

  • 事件绑定、事件冒泡与捕获

    一、事件绑定事件绑定又称事件委托,事件代理,可以给同一个div绑定多个事件 非IE: IE: 绑定事件兼容写法:(...

  • 025 JS事件

    JS事件 ********* 一、事件的两种绑定方式 ******* 1、on事件绑定方式 2、非on事件绑定方式...

  • IE的attachEvent

    事件绑定分为传统的事件绑定和现代的事件绑定 传统的事件绑定的一般形式为: 现代的事件绑定分为W3C的addEve...

  • JavaScript事件

    事件分类 事件的绑定方法 通过标签绑定事件 通过js获取DOM元素绑定事件 通过addEventListener属...

  • js事件

    JS事件 事件绑定方式 事件对象 事件传播流 事件代理 一、事件绑定方式 方式一:通过HTML标签行间属性内绑定 ...

  • 绑定事件 自定义事件 事件冒泡

    绑定事件 bind命令同时绑定多个事件 unbind取消绑定 自定义事件 trigger是触发事件 事件冒泡 ev...

  • jQuery事件

    一、基础事件 1、绑定事件 bind();参数一:要绑定事件函数的事件名。参数二:要绑定的事件函数(事件函数名),...

  • 2018-10-18

    JS事件 一、事件的两种绑定方式 ******* 1、on事件绑定方式 2、非on事件绑定方式 二、事件参数eve...

网友评论

    本文标题:事件绑定

    本文链接:https://www.haomeiwen.com/subject/sptamctx.html