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

为什么jquery要设计focusin和focusout受冒泡影响呢?好处是什么?

为什么jquery要设计focusin和focusout受冒泡影响呢?好处是什么?相比之下blur与focus不受冒泡影响不是更方便吗?

正在回答

4 回答

focus事件本身是不冒泡的,但是focusin可以,动态添加元素时,就不需重新绑定焦点事件,通过冒泡就能触发。即只要在父元素上添加focusin事件就相当于在子元素被点击时触发子元素的focus事件。


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

weibo_一万群什麼_0 提问者

不错,这就叫事件委托。
2016-10-13 回复 有任何疑惑可以回复我~

补充点。楼上说的这个好处呢,可以体现为性能的优化,假如没有事件的冒泡,你要处理子对象就要一个一个的去建立对象,当它可以在父类处理时,就只要一个对象就行了。不仅节约了内存,减少了对象的创建还减少了内存的处理时间。《js高级教程》可以看看

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

focusin当一个元素,或者其内部任何一个元素获得焦点的时候会触发这个事件。这跟focus事件区别在于,他可以在父元素上检测子元素获取焦点的情况。例如:

<p><input type="text" /> <span>focusout fire</span></p>
<p><input type="password" /> <span>focusout fire</span></p>jQuery 代码:
$("p").focusin(function() {
  $(this).find("span").css('display','inline').fadeOut(1000);
});

focusout(fn)当一个元素,或者其内部任何一个元素失去焦点的时候会触发这个事件。这跟blur事件区别在于,他可以在父元素上检测子元素失去焦点的情况。

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

淡水狗

像 <script type="text/javascript"> $(".aaron").focus(function() { $(this).css('border', '2px solid red') }) $(".aaron1").focusin(function() { $(this).find('input').val('冒泡捕获了focusin事件') }) </script> 里面 当我点击aaron1的时候怎么里面的input没有反应??
2017-07-12 回复 有任何疑惑可以回复我~
#2

淡水狗

并不是很能理解~~
2017-07-12 回复 有任何疑惑可以回复我~
#3

淡水狗

focusin()元素包含的元素中产生意思就是要点击aaron1里面的input元素 才有反应是吧?
2017-07-12 回复 有任何疑惑可以回复我~

这就是focusin的好处之一,可以让父元素检测到子元素获取焦点的情况。比如

HTML 代码:

<p><input type="text" /> <span>focusout fire</span></p>
<p><input type="password" /> <span>focusout fire</span></p>
     

jQuery 代码:

$("p").focusin(function() {
 $(this).find("span").css('display','inline').fadeOut(1000);
});


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

举报

0/150
提交
取消
jQuery基础(三)—事件篇
  • 参与学习       89996    人
  • 解答问题       625    个

jQuery第三阶段开启事件修炼,掌握对页面进行交互的操作

进入课程

为什么jquery要设计focusin和focusout受冒泡影响呢?好处是什么?

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