js dom 阻止事件冒泡,阻止事件的默认行为
作者:互联网
参考博客: https://www.cnblogs.com/plane-hjh/p/7880131.html
https://www.cnblogs.com/leftJS/p/10948138.html
http://caibaojian.com/javascript-stoppropagation-preventdefault.html
https://www.cnblogs.com/gopark/p/9579062.html1 两种方式来阻止事件捕获和冒泡 。
在正常的开发过程中,如果想要阻止事件的传播,通过一个方法实现。
在微软的模型中,你必须设置事件的cancelBubble的属性为true
window.event.cancelBubble = true |
在w3c模型中你必须调用事件的stopPropagation()方法
e.stopPropagation()//阻止事件冒泡 event. stopImmediatePropagation()//可以阻止掉同一事件的其他优先级较低的侦听器的处理(这货表示没用过,优先级就不说明了,谷歌或者问度娘吧。) |
通过调用这些方法会阻止所有冒泡向外传播。跨浏览器解决方案:
function doSomething(e) { if (!e) { var e = window.event; e.cancelBubble = true; } if (e.stopPropagation) { e.stopPropagation(); } } |
2 阻止事件的默认行为,例如click <a>后的跳转~
• 在IE下设置window.event.returnValue = false;
• 在W3c中,使用preventDefault()方法; //阻止元素默认的行为,如链接的跳转、表单的提交;
event.target与event.currentTarget他们有什么不同?
target在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。只有当事件流处在目标阶段的时候,两个的指向才是一样的, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(一般为父级)。
javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡。 下面这个使用原生js,只会阻止默认行为,不会停止冒泡
标签:dom,默认,js,阻止,事件,stopPropagation,event,冒泡 来源: https://www.cnblogs.com/hacker-caomei/p/14422570.html