事件委托/事件代理

什么是事件委托/事件代理?
利用事件的冒泡传播机制(触发当前元素的某一个行为,它父级所有元素相关行为都会被触发),如果一个容器中有很多元素都要绑定点击事件,没有必有一个一个的绑定了,只需要给最外层的容器绑定一个点击事件即可,在这个方法执行的时候,通过事件源的区分来进行不同的操作。

简单应用

<div id="box">
    <span>购物车</span>
    <div id="mark" style="display: none">查看购物车中的详细信息</div>
</div>
<script>
    var mark = document.getElementById('mark');
    document.body.onclick = function (e) {
        e = e || window.event;
        e.target = e.target || e.srcElement;

        // 如果点击的是#box或者#box下的span,判断mark是否显示,显示的话让其隐藏,反之显示
        if (e.target.id === 'box' || e.target.tagName.toLowerCase() === 'span' && e.target.parentNode.id === 'box') {
            if (mark.style.display === 'none') {
                mark.style.display = 'block';
            } else {
                mark.style.display = 'none';
            }
            return;
        }

        // 如果事件源是#mark,不进行任何的操作
        if (e.target.id === 'mark') {
            return;
        }

        // 以上都不是的话,直接让#mark隐藏
        mark.style.display = 'none';
    }
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 链接地址:http://www.cnblogs.com/liugang-vip/p/5616484.htmlhtt...
    青春前行阅读 4,189评论 0 0
  • 利用事件的冒泡传播机制(触发当前元素的某个行为,它父级所有的相关行为都会被触发),如果一个容器中很多元素需要绑定事...
    McDu阅读 1,684评论 0 0
  • 事件委托就是利用事件冒泡,只指定一个时间处理程序就可以管理某一类型的所有事例。 优点:提高性能 JavaScrip...
    我真的好暴躁啊阅读 1,778评论 0 0
  • 一、什么是事件委托 事件委托也叫事件代理,就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。...
    芒果加奶阅读 4,292评论 0 0
  • 运算符 C++ 预定义表示对数据的运算只能用于基本的数据类型 C++ 提供了数据抽象的手段用户自己定义数据类型 -...
    Mitchell阅读 3,437评论 0 0

友情链接更多精彩内容