首页 > 代码库 > 取消事件冒泡
取消事件冒泡
下面我想实现的效果是点击按钮显示和隐藏div,点击document隐藏div。但是发现如果没有取消事件冒泡,点击按钮始终不会显示div,那是因为事件一层一层往上冒泡,最终去到document,直接执行了document上的点击事件。实际上不是没有显示出div,而是显示瞬间又执行了document的点击事件而隐藏了,因为速度太快人眼看不到,不妨可以在中间加alert(‘a‘);弹一个框出来暂停验证一下。
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style> #div1{ width: 300px; height: 300px; background: #000; display: none; } </style> </head> <body> <input id = "btn1" type = "button" value = "显示" /> <div id = "div1"></div> <script type="text/javascript"> var oBtn = document.getElementById(‘btn1‘); var oDiv = document.getElementById(‘div1‘); oBtn.onclick = function(ev){ var oEvent = ev||event; if(oDiv.style.display == ‘none‘) { oDiv.style.display = ‘block‘; } else{ oDiv.style.display = ‘none‘; } oEvent.cancelBubble = true;//取消事件冒泡 } document.onclick = function(){ oDiv.style.display = ‘none‘; } </script> </body> </html>
取消事件冒泡
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。