为了账号安全,请及时绑定邮箱和手机立即绑定

没怎么理懂,div里要是有好几个input呢?冒泡不是由里向外么?

focusin()在元素包含的元素中产生,怎么产生的?通过点击元素中的元素?然后触发了啥?

我印象中的冒泡是当div与其中的元素都绑定了click事件时,点击里面的元素会向外冒泡,触发div的点击事件

正在回答

5 回答

blur、focus事件在元素本身产生,不支持冒泡;focusin、focusout事件支持冒泡。并要注意不是所有元素都能够接收焦点的.能够响应用户操作的元素才有焦点

所以

 $(".aaron").focus(function() {

        $(this).css('border', '2px solid red')

    })

这里父级div虽然绑定了focus事件,但是由于是子元素input获得了焦点,也就是input触发了focus事件(当然同时也触发了focusin事件)但是input却没有绑定事件处理函数,所以input不会有什么反应,再因为focus不支持冒泡,所以父级div的focus事件并不会被触发,综上所述就没有任何反应了

而$(".aaron1").focusin(function() {

        $(this).find('input').val('冒泡捕获了focusin事件')

         $(this).css('border', '2px solid red')

    })

这里父级div绑定了focusin事件,子元素input获得了焦点后触发了focusin事件(当然同时也触发了focus事件),又因为支持冒泡,所以父级div的focusin事件就被触发了,就出现反应了


15 回复 有任何疑惑可以回复我~
#1

THMAIL

听君一席话,胜过自己思考一个小时
2016-09-20 回复 有任何疑惑可以回复我~
#2

Cshine 回复 THMAIL

哈哈哈 好久没来慕课网 突然看到这句评论 瞬间有点小嗨皮
2016-10-27 回复 有任何疑惑可以回复我~
#3

冥oo冥

6666
2016-11-08 回复 有任何疑惑可以回复我~

和click是同样的道理,点击了里面的元素,然后因为冒泡,也触发了父级元素事件

0 回复 有任何疑惑可以回复我~

focus和blur都是表单input事件,而aaron不是表单元素,是div,所以当然不会有反应了。

1 回复 有任何疑惑可以回复我~

首先要清楚focusin和focusout是鼠标事件,focus和blur是表单事件。 focus和blur不支持冒泡事件

你对冒泡事件的理解有误,http://www.cnblogs.com/webflash/archive/2009/08/23/1552462.html,看看这个希望可以帮助你

 $(".aaron").focus(function() { $(this).css('border', '2px solid red')    }) 这部分不会有反应的原因是,聚焦input后,它并不会向上寻找有包含类为aaron的div,也就不会为这个div设置样式(不会去执行它的父级上的事件)

1 回复 有任何疑惑可以回复我~
#1

guoguo13

说错了,,不是冒泡事件。。。是事件冒泡。。囧
2016-07-15 回复 有任何疑惑可以回复我~

这两个无反应是为啥?。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

没怎么理懂,div里要是有好几个input呢?冒泡不是由里向外么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信