事件委托

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <ul>
        <li class="item">按钮</li>
        <li class="item">按钮</li>
        <li class="item">按钮</li>
        <li class="item">按钮</li>
    </ul>
</body>
<script>
    // 不使用事件委托,那就要遍历每一个li元素,给每个li元素绑定一个点击事件,
    //这样的做法非常耗费内存,如果有100个、1000个li元素,那对性能的影响是非常大的。
    window.onload = function () {
        let lis = document.getElementsByClassName('item')
        for (let i = 0; i < lis.length; i++) {
            lis[i].onclick = function () {
                console.log('用力的点我')
            }
        }
    }
</script>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <ul id="wrap">
        <li class="item">按钮</li>
        <li class="item">按钮</li>
        <li class="item">按钮</li>
        <li class="item">按钮</li>
    </ul>
</body>
<script>
    window.onload = function () {
        let ul = document.getElementById('wrap')
        ul.onclick = function (ev) {
            // 获取到事件对象
            let e = ev || window.event
            console.log(ev, window.event);
            // 如果点击的元素的calssName为item
            if (e.target.className === 'item') {
                console.log('用力的点我')
            }
        }
    }
</script>

</html>
原文地址:https://www.cnblogs.com/w-y-1/p/13182674.html