.focus( handler(eventObject) )返回: jQuery
描述: 为 JavaScript 的 "focus" 事件绑定一个处理函数,或者触发元素上的 "focus" 事件。
-
添加的版本: 1.0.focus( handler(eventObject) )
-
handler(eventObject)类型: Function()每次事件触发时会执行的函数。
-
-
添加的版本: 1.4.3.focus( [eventData ], handler(eventObject) )
-
添加的版本: 1.0.focus()
- 这个方法不接受任何参数。
这个函数的前两个用法是 .bind('focus', handler)
的快捷方式,第3个不带参数的用法是 .trigger('focus')
的快捷方式。
当一个元素获得焦点时,focus
事件被触发。此事件起初适用于有限的元素,比如表单元素(<input>
, <select>
等)和链接元素(<a href>
)。在最近版本的浏览器中,该事件可以扩展到所有包括通过显式设置tabindex
属性的元素类型。一个元素可以通过键盘命令获得焦点,如Tab键,或按鼠标点击的元素。
获取焦点的元素,浏览器一般会以某种高亮方式来显示,比如,点线围绕的元素。该事件通常用于判断哪个元素是最先接收键盘相关事件的元素。
试图将焦点设置到一个隐藏的元素在Internet Explorer中导致错误。请注意,
.focus()
只能在可见元素上使用。要在一个元素执行focus事件却又不想让这个元素获取焦点的话, 请使用.triggerHandler("focus")
来代替.focus()
。
举例来说,请看下面的HTML:
1
2
3
4
5
6
7
|
|
这个事件处理函数可以绑定到第一个 input field
1
2
3
|
|
现在,如果点击第一个表单域或按tab键从其他地方切换到这个表单域,警报显示:
Handler for .focus() called.
我们可以点击另一个元素触发这个事件:
1
2
3
|
|
这些代码执行后,点击Trigger the handler也提醒消息。
focus
事件不会在Internet Explorer中冒泡。因此,用focus
事件委派,跨浏览器无法正常工作。但是,在1.4.2版本,
jQuery的解决此限制,将focus
模拟为focusin
事件,可以使用.live()
和 .delegate()
的委派方法,解决了跨浏览器的问题.
例子:
Example: 触发 focus 事件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
|
Demo:
Example: 阻止用户在文本框中写任何内容:
1
2
3
|
|
Example: 在页面显示时,将焦点移到 id 为 'login' 的 input 元素上:
1
2
3
|
|