首页 > 试题广场 >

假设DOM结构为: div i...

[单选题]
假设DOM结构为:
<div id="a"><div id="b"></div></div>
JS代码为:
document.getElementById('a').addEventListener('click', e => {console.log(1)});
document.getElementById('b').addEventListener('click', e => {e.preventDefault();console.log(2)});
当点击id为b的div时,控制台输出的内容是:
  • 1
    2
  • 2
    1
  • 1
  • 2
e.preventDefault() 是用来阻止默认事件的,不是阻止事件冒泡
事件冒泡应该是 e.stopPropagation()
发表于 2019-08-15 20:12:26 回复(1)
几个常见的事件的方法
preventDefault()    取消事件默认行为,如阻止点击提交按钮时对表单的提交(本题中click并没有什么默认行为)

stopImmediatePropagation()   取消事件冒泡同时阻止当前节点上的事件处理程序被调用,影响当前的事件***

stopPropagation()   取消事件冒泡,不影响事件***

cancelBubbe()     取消事件冒泡

returnValue()      取消事件默认行为

发表于 2019-10-06 20:19:59 回复(3)
在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要),这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件。
发表于 2020-03-20 15:51:52 回复(0)
按照W3C的标准,是先捕获,再冒泡。但是 addEventListener 的第三个参数是用来设置回调函数是在捕获时触发,还是在冒泡时触发,默认为false,即冒泡时触发,也就是说上面两个回调函数先执行第二个,再执行第一个。
但是有一点需要注意:虽然W3C标准是先执行捕获,再执行冒泡,但这是对多个元素而言的。如果对一个元素的某个事件同时设置了捕获和冒泡,那么具体的执行顺序和事件的注册顺序是一样的,谁先注册,谁先执行,我想是和事件循环有关。
编辑于 2020-03-19 16:28:15 回复(3)
知识点有四个
1.事件冒泡。
2.addEventListener是有第三个可选参数的,默认为false,意思是不在捕获阶段提前触发。
3.preventDefault()是阻止事件的默认操作,比如点submit之后会提交表单。类似的属性是returnValue=false
4.阻止冒泡的方法是,e.stopPropagation()或者e.cancelBubbe
发表于 2021-07-07 07:20:13 回复(0)
简单的说就是事件冒泡,触发了b事件还向上冒触发了a的事件
发表于 2020-05-23 11:58:21 回复(0)
B  因为id为b的div在 id为a的div里面,点击事件的时候会触发a,所以是2,1
发表于 2020-03-25 15:33:39 回复(0)
<p>首先要知道addEventListener事件监听 默认是冒泡机制</p><p>基于冒泡机制:由内向外传播</p><p>#a 是 #b 的父级元素</p><p>#a 打印了 1</p><p>#b 打印了 2</p><p>所以点击#b 最后输出为:2 1</p><p><br></p>
发表于 2020-12-09 22:47:44 回复(0)
preventDefault()用于阻止默认事件
这里还是会冒泡去执行父元素的值
阻止冒泡事件是stopProPagation()
发表于 2020-08-21 17:48:03 回复(0)
preventDefault()    取消事件默认行为,如阻止点击提交按钮时对表单的提交

cancelBubbe()     取消事件冒泡


编辑于 2020-02-22 19:10:42 回复(0)
冒泡和捕获 https://zh.javascript.info/bubbling-and-capturing
发表于 2023-02-06 15:24:19 回复(0)
e.preventDefault()阻止默认事件 e.stopPropogation() 要判断浏览器兼容性 event=window.event||event
发表于 2022-06-05 23:46:03 回复(0)
1.冒泡不属于默认行为,阻止冒泡的方法:stopPropagation()

2.阻止默认行为的方法:e.preventDefault(),(一般是<a>链接跳转或者表单提交)
发表于 2022-05-16 20:45:51 回复(0)
b哪错了啊,它不是不能参与运算么
发表于 2022-01-17 08:50:56 回复(0)
题中的preventdefault是阻止默认事件的,不是阻止事件冒泡,所以点击b会触发a
发表于 2021-10-22 09:10:32 回复(0)
preventDefault()阻止的是事件的默认行为,并不是阻止的事件冒泡,所以点击子元素的时候,仍然会发生时间事件冒泡,绑定的父级元素的事件也会执行
发表于 2021-02-23 11:59:20 回复(0)
e.preventDefault() 是用来阻止默认事件的,不是阻止事件冒泡
发表于 2021-02-04 15:10:09 回复(0)
冒泡
发表于 2020-11-10 12:30:28 回复(0)
这里的b设置的是阻止默认行为,然而,点击b的时候执行的是冒泡行为,所以才显示2,1。
发表于 2020-08-28 14:36:32 回复(0)
答案:B。 e.preventDefault() 是用来阻止默认事件的并不是阻止事件冒泡;事件冒泡应为 e.stopPropagation() 
发表于 2020-06-17 15:43:04 回复(0)