当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .focus()用法及代码示例


用法
.focus( handler ) => jQuery

说明:将事件处理程序绑定到 "focus" JavaScript 事件,或在元素上触发该事件。

  • 添加的版本:1.0.focus( handler )

    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.4.3.focus( [eventData ], handler )

    • eventData
      类型:Anything
      包含将传递给事件处理程序的数据的对象。
    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.0.focus()

    • 此签名不接受任何参数。
  • 此方法是第一和第二变体中.on( "focus", handler ) 和第三变体中.trigger( "focus" ) 的快捷方式。
  • focus 事件在获得焦点时发送到元素。此事件隐式适用于有限的元素集,例如表单元素(<input><select> 等)和链接(<a href>)。在最近的浏览器版本中,可以通过显式设置元素的tabindex 属性来扩展事件以包括所有元素类型。元素可以通过键盘命令(例如 Tab 键)或通过鼠标单击元素获得焦点。
  • 具有焦点的元素通常由浏览器以某种方式突出显示,例如用虚线围绕元素。焦点用于确定哪个元素最先接收keyboard-related 事件。

尝试将焦点设置到隐藏元素会导致 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." );
});

现在单击第一个字段,或从另一个字段切换到它,显示警报:

.focus() 的处理程序被调用。

我们可以在点击另一个元素时触发事件:

$( "#other" ).click(function() {
  $( "#target" ).focus();
});

这段代码执行后,点击触发处理程序也会提醒消息。

focus 事件不会在 Internet Explorer 中冒泡。因此,依赖于 focus 事件的事件委托的脚本将无法在浏览器中始终如一地工作。然而,从 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-3.5.0.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();
});

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .focus()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。