其他分享
首页 > 其他分享> > js dom 阻止事件冒泡,阻止事件的默认行为

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.html

 

1 两种方式来阻止事件捕获和冒泡 。

在正常的开发过程中,如果想要阻止事件的传播,通过一个方法实现。

 

    在微软的模型中,你必须设置事件的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