我阻止了p的默认行为,里面的a就不跳转了。
代码:
问题:
a标签不跳转了,但是p本身没有任何默认行为啊,阻止p的默认行为,为何会阻止a的跳转。
猜想一:
a标签的页面跳转行为是由window来执行的,在事件传播的过程中,中止掉了这个传递过程。
猜想二:
但是用stoppropagation(),并不能阻止,说明事件传播和行为传播是两个线程?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
1.
其实是点击a,冒泡到p,触发p的onclick,执行了当前事件的阻止默认行为,就不跳转了。
2.
给a的点击事件加了stoppropagation()是能够正常跳转的。因为看不到代码不知道是我理解错误你的意思还是你加错了位置。
3.
事件的默认行为是在事件的所有你写的代码执行完毕才会被执行。
其实在 p 上加 click 事件,和直接在 a 标签上加事件,event 是同一个,这就好理解了。
event.preventDefault()是阻止某个事件的默认行为,与哪个元素无关,所以即使你是给p绑定click事件,也是会阻止a标签的click事件的默认行为,个人观点
在 a 标签的 onclick 事件中调用 stopPropagation() 则 不管 p 的 onclick 事件中是否调用了 preventDefault() 都无法阻止 a 标签的默认行为.
所以我推测,事件的默认行为是否被阻止是在事件传播结束后结算的,即在事件传播结束后回调默认行为函数
就是事件冒泡而已。单击 a 产生 click 事件 event.target === a 。事件冒泡,委托 p 进行处理
既然阻止了默认事件 那就不跳转了。
这应该是时间捕获吧!