.focus()
返回: jQuery
.focus( handler )
描述:把某个事件处理函数绑定到JavaScript事件“focus”上,或在某个元素上触发该事件。
加入于: 1.0
.focus( handler )加入于: 1.4.3
.focus( [eventData ], handler )- eventData类型:Anything一个对象,它包含了要传递给事件处理函数的数据。
- handler一个函数,在每次事件被触发时执行它。
加入于: 1.0
.focus()该签名不接受任何参数。
- 在前两个变体中,该方法是
.on( "focus", handler )
的简写,在第三种变体中,是.trigger( "focus" )
的简写。 - 当一个元素获得焦点时,
focus
事件被发送到该元素。该事件潜在地只适合于一些有限的元素集合,比如说表单元素(<input>
、<select>
等等)以及链接(<a href>
)。在最近的浏览器版本中,这个事件扩展到包括所有的元素类型,只要显式地设置元素的tabindex
属性。一个元素可以通过键盘命令获得焦点,比如说Tab键,或者通过鼠标在元素上点击获得焦点。 - 带焦点的元素,通常被浏览器以一些方式高亮,比如说用点点线包围该元素。焦点用来确定哪个元素是每一个接收键盘相关的事件的。
试图把焦点设置到一个隐藏的元素上,会导致Internet Explorer中的一个错误。要小心,只能在可见的元素上使用.focus()
。要想运行一个元素的获得焦点事件处理函数,而不在元素上设置焦点,请使用.triggerHandler( "focus" )
来代替.focus()
。
举个例子,设想下面的HTML:
<form> <input id="target" type="text" value="Field 1"> <input type="text" value="Field 2"> </form> <div id="other"> Trigger the handler </div>
事件处理函数可以绑定到第一个输入字段上:
$( "#target" ).focus(function() { alert( "Handler for .focus() called." ); });
现在点击第一个字段,或者别的字段上轻角尺它,显示这条提醒:
Handler for .focus() called.我们可以在别的元素被点击时触发该事件:
$( "#other" ).click(function() { $( "#target" ).focus(); });
在代码执行之后,点击“Trigger the handler”将也会跳出这条消息。
focus
事件不能在Internet Explorer中冒泡。因此,依赖于focus
事件传播的脚本不能跨浏览器一致性起作用。然而,自从jQuery 1.4.2,jQuery通过在它的委托方法.live()
和.delegate()
中把focus
映射到focusin
事件,变通地解决了这个限制。
其它说明
- 因为
.focus()
方法只是.on( "focus", handler )
的简写,所以可以利用.off("focus")
来分离它。
示例
引发聚焦:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>focus demo</title> <style> span { display: none; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p><input type="text"> <span>focus fire</span></p> <p><input type="password"> <span>focus fire</span></p> <script> $( "input" ).focus(function() { $( this ).next( "span" ).css( "display", "inline" ).fadeOut( 1000 ); }); </script> </body> </html>
演示结果
要想阻止用户在文本输入框中打字,只要:
$( "input[type=text]" ).focus(function() { $( this ).blur(); });
要想在网页打开时光标聚集在一个还id“login”的登录框上,只要:
$( document ).ready(function() { $( "#login" ).focus(); });