在之前2.8与2.9节我们学过了表单处理事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件
它们之间的本质区别:
是否支持冒泡处理
举个简单的例子
<div> <input type="text" /> </div>
其中input元素可以触发focus()事件
div是input的父元素,当它包含的元素input触发了focus事件时,它就产生了focusin()事件。
focus()在元素本身产生,focusin()在元素包含的元素中产生
blur与focusout也亦是如此
具体参考下案例,给出来的区别
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> .left div, .right div { width: 500px; height: 50px; padding: 5px; margin: 5px; float: left; border: 1px solid #ccc; } .left div { background: #bbffaa; } .right div { background: yellow; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h4>.focusin与blur</h4> <div class="left"> <div class="aaron"> 点击触发焦点(无反应): <input type="text" /> </div> <div class="aaron1"> 点击触发焦点并冒泡: <input type="text" /> </div> </div> <script type="text/javascript"> $(".aaron").focus(function() { $(this).css('border', '2px solid red') }) $(".aaron1").focusin(function() { $(this).find('input').val('冒泡捕获了focusin事件') }) </script> <h4>.focusout与blur</h4> <div class="right"> <div class="aaron3"> 点击触发失去焦点(无反应): <input type="text" /> </div> <div class="aaron4"> 点击触发失去焦点并冒泡: <input type="text" /> </div> </div> <script type="text/javascript"> $(".aaron3").blur(function() { $(this).css('border', '2px solid red') }) $(".aaron4").focusout(function() { $(this).find('input').val('冒泡捕获了focusout事件') }) </script> </body> </html>