慕UI6248976
2018-03-27 16:54
冒泡现象其实可以理解为:遇到“问题”找“爸爸”。
这个老师解释的不太好!!!!!
你们的思维应该反过来思考,不是遇到问题找爸爸,冒泡本质是子孙继承问题,有冒泡就是继承,没冒泡就是不继承
案例里抛开根本性的东西去扯表面的现象,我觉得有点舍本逐末。
我有一点我最基本的理解就是,focus,blur是表单事件,说白了只有表单控件如input,textarea上才可以添加,而表单空间之间几乎不存在父子嵌套的关系,所以谈不上会引发冒泡事件,像div,p等其他的html元素是不可以添加这个事件的,那么,也就谈不上子元素父元素之间的事件相互激发,谈不上冒泡了。。focusin ,focusout是鼠标事件,可以添加在任何html元素上的,而很明显的html元素会存在嵌套关系,比如div里装一个表单控件input,那么一旦div 和input上都有focusin事件,点击input子元素的时候,肯定会触发父元素div上的冒泡事件。
一句话:究其根本是:focus blur 是存在于几乎无嵌套关系的表单控件上,不存在冒泡事件
focusin focusout是存在所有html元素上的,有嵌套关系的元素就可以引发冒泡事件。
冒泡就是给子元素绑定的事件,父元素,祖先元素也会触发,相当于鱼吐泡泡,向上传递
捕获则相反,给父元素绑定的事件,子元素也会触发
我感觉冒泡现象说的少了一个方面,是有问题找爸爸,这是一个方面,但是如前面的mouseover,mouseout和mouseenter和mouseleave,如果mouseover父子同时有的话,在子元素上移动就都执行,mouseenter就只执行子元素,这里说的focus如果子元素有focus ,父元素有focusin,在子元素上聚焦就会都执行 ,如果focusin在子元素上,父元素也有,就都执行,如果是focus 就只执行自己(前提是父元素上没有focusin,有没有focus无所谓),简单的说就是如果父子都有这个事件,在子元素上触发,父元素和子元素的事件都会触发
冒泡现象其实可以理解为:遇到“问题”找“爸爸”。
“问题”:就是一些特定的事件。
“爸爸”:就是父级元素。
举例:focusin案例中第二个绿盒子里的input元素被我们点击时,就触发了focusin事件。
但是input表示:我很方啊,我没有这个事件的处理方法啊!咋整?找老爸,问他有没有!
绿盒子老爸说:莫方,我有,让我来! 最终就调用了绿盒子老爸的方法。
PS:如果绿盒子老爸自己也没有呢?他会问他的老爸,以此类推,一直问到老祖宗window,都没有的话就只好啥也不做啦!
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题