You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写jQuery函数时,Vanilla JS中与focusout()等效的方法是什么?

用原生JavaScript实现jQuery的focusout()方法

1. 触发元素失去焦点(对应你的代码场景)

你的jQuery代码inputBox.focusout()是主动触发目标元素的失去焦点事件,原生JS里直接调用元素的blur()方法就能实现完全一致的效果:

// 获取原生DOM元素
const inputBox = document.querySelector('.searchbox-input');
// ...
// 触发失去焦点事件
inputBox.blur();

2. 绑定失去焦点事件监听(扩展场景)

如果是要实现jQuery中inputBox.focusout(function(){ ... })的事件绑定逻辑,原生JS可以通过两种方式实现,对应不同的事件冒泡行为:

方式一:监听blur事件(不冒泡)

和jQuery的blur()绑定逻辑一致,仅在当前元素触发失去焦点时执行:

const inputBox = document.querySelector('.searchbox-input');
inputBox.addEventListener('blur', function() {
  // 输入框失去焦点时执行的逻辑
  console.log('输入框已失去焦点');
});

方式二:监听focusout事件(支持冒泡)

和jQuery的focusout()绑定逻辑完全匹配,支持事件冒泡(比如父元素可以监听子元素的失去焦点事件):

const container = document.querySelector('.search-container');
container.addEventListener('focusout', function(e) {
  // 校验事件触发源是否为目标输入框
  if (e.target.classList.contains('searchbox-input')) {
    console.log('输入框已失去焦点');
  }
});

核心说明

jQuery的focusout()触发事件时,本质就是调用了原生的blur()方法,同时会触发冒泡的focusout事件;原生blur()方法直接触发元素失去焦点,和你的jQuery代码效果完全等价。

内容的提问来源于stack exchange,提问作者Max Pattern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:10:30