美文网首页
如何阻止事件冒泡和默认事件?

如何阻止事件冒泡和默认事件?

作者: 修了个真 | 来源:发表于2017-05-21 20:28 被阅读0次

    1.背景介绍

    事件冒泡

    在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

    默认行为

    浏览器的一些默认的行为。例如:点击超链接跳转,点击右键会弹出菜单,滑动滚轮控制滚动条

    2.知识剖析

    事件冒泡有什么作用

    事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。让不同的对象同时捕获同一事件,并调用自己的专属处理程序做自己的事情

    3.常见问题

    如何阻止事件冒泡和默认事件?

    4.解决方案

    阻止事件冒泡

    1、DOM中提供stopPropagation()方法,但IE不支持,使用event对象在事件函数中调用就行

    2、IE中提供的是,cancelBubble属性,默认为false,当它设置为true时,就是阻止事件冒泡,也是用event对象在事件函数中调用

    3、jQuery中提供了stopPropagation()方法来停止事件冒泡,当需要时,只需用用event对象来调用就行,即event.stopPropagation();

    阻止默认行为

    1、DOM中提供preventDefault()方法来取消事件默认行为,但是只有当cancelable属性设置为true的事件,才可以使用preventDefault()来取消事件默认行为,使用event对象在事件函数中调用就行

    2、IE中提供的是returnValue属性,默认为true,当它设置为false时,就是取消事件默认行为,也是用event对象在事件函数中调用

    3、jQuery中提供了preventDefault()方法来阻止元素的默认行为,只需要用event对象来调用就好,即event.preventDefault()

    同时阻止事件冒泡和默认行为

    如果想同时对事件对象停止冒泡和默认行为,可以在事件处理函数中返回false。

    这是对事件对象同时调用stopPropagation()方法和preventDefault()方法的一种简写方式。

    这样做会有一些弊端,不要滥用。

    5.编码实战

    见视屏

    6.扩展思考

    兼容ie的写法

    见视屏

    7.参考文献

    博客园

    脚本之家

    8.更多讨论

    还有哪些其他的默认行为?

    return false;的机制与用法?


    事件冒泡和默认行为_腾讯视频

    视频地址:https://v.qq.com/x/page/i0500owvm6f.html

    ppt地址:https://ptteng.github.io/PPT/PPT/js-04-stopBubble,stopDefault2.html#/

    文本地址:http://www.jnshu.com/daily/23679?dailyType=others&total=115&page=1&uid=8415&sort=0&orderBy=3

    技能树.IT修真院

    “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

    这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !

    http://www.jnshu.com/login/1/84150319

    相关文章

      网友评论

          本文标题:如何阻止事件冒泡和默认事件?

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