前端实战:jQuery 输入框防抖模糊搜索(定时器防抖+filter筛选)
一、前言在日常项目和后台管理系统中顶部搜索框实时搜索是非常高频的功能。如果直接监听输入框的 input 事件用户每敲一个字就会执行一次搜索、渲染一次列表会造成严重的页面卡顿、性能浪费。为了解决这个问题前端引入了防抖debounce思想用户连续输入时不触发搜索停止输入指定时间后再执行一次搜索。本文就用你课堂原版代码带大家彻底搞懂 jQuery 定时器防抖 前端模糊搜索 的完整逻辑。二、最终完整可运行代码包含 HTML 结构、jQuery 防抖逻辑、filter 模糊筛选、搜索提示、分页渲染和你写的代码完全一致仅补全结构可直接运行。jQuery 防抖搜索实战!-- 搜索结构 -- div classsearch_item label分类标题/label input placeholder请输入 idtitleb /div script let listData [] // 搜索数据源 let currentEditId // 定时器标识 // 监听输入框输入事件 $(#titleb).on(input, function () { // 当输入框改变时消除上一次的计时 clearTimeout(currentEditId); // 添加定时器防止频繁触发搜索 currentEditId setTimeout(function () { fieldofsearch() // 执行搜索函数 }, 2000); // 停止输入2秒后搜索 }) // 搜索执行函数 function fieldofsearch() { // 1. 获取输入框的值并去除首尾空格 let data $(#titleb).val().trim(); // 2. 筛选数据匹配标题包含输入关键词的项模糊搜索 let Filterpackage listData.filter(item item.title.includes(data)) // 3. 搜索结果提示 Filterpackage.length ? Toast.showSuccess(搜索成功) : Toast.showError(无搜索结果); // 4. 重新渲染分页和列表 initPagination(Filterpackage) } // 模拟分页渲染函数 function initPagination(arr){ console.log(筛选后的列表数据, arr) // 此处可编写渲染表格、渲染分页逻辑 } // 模拟全局提示弹窗适配原代码Toast const Toast { showSuccess:(msg)console.log(成功,msg), showError:(msg)console.log(失败,msg) } /script三、逐行代码详细解析 1. 全局变量作用 let listData []//搜索数据 let currentEditId // 存储定时器ID - listData全局存放所有原始列表数据所有筛选都基于这份原始数据保证筛选不会丢失原始内容。 - currentEditId用来接收定时器返回值用于清除上一次的延时任务是防抖核心变量。 2. 输入框监听防抖核心逻辑 $(#titleb).on(input, function () {//设置监听函数监听input clearTimeout(currentEditId);//当输入框改变时消除上一次的计时 currentEditId setTimeout(function () {//添加定时器防止连续点击 fieldofsearch()//当停止输入2秒后执行搜索 },2000);//两秒后搜索 }) 防抖原理重点 1. 用户每输入一个字符就会触发 input 事件 2. 每次触发都会 清除上一次未执行的定时器 3. 只要用户一直在打字定时器就会一直被清除搜索永远不会执行 4. 用户停止输入2秒后定时器不会被清除才会执行一次搜索。 完美解决了「输入频繁触发搜索」的性能问题。 3. 搜索核心函数 fieldofsearch() function fieldofsearch() {//搜索执行函数 // 第一步获取输入框的值并去空格 let data $(#titleb).val().trim(); // 第二步filter 筛选模糊匹配数据 let Filterpackage listData.filter(item item.title.includes(data)) // 第三步判断搜索结果并提示 Filterpackage.length ? Toast.showSuccess(搜索成功) : Toast.showError(无搜索结果); // 第四步重新渲染分页 initPagination(Filterpackage) } 核心方法讲解 - .trim()去除输入内容首尾空格防止用户输入空空格导致无效搜索。 - Array.filter()遍历数组返回符合条件的新数组不会修改原数据。 - includes()模糊搜索核心只要标题中包含输入的关键词就匹配成功。 - 三元表达式判断筛选后的数组长度有数据提示成功无数据提示无结果。 四、核心知识点总结 1. 什么是防抖 防抖高频触发的事件在停止触发一段时间后只执行最后一次。 本案例场景输入框高频输入停止2秒才搜索极大优化浏览器性能。 2. input 事件 和 change 事件区别 - input实时触发每输入/删除字符都会触发适合搜索框。 - change失去焦点、回车才触发不适合实时搜索。 3. 前端模糊搜索原理 数组.filter() 字符串.includes() 遍历所有数据判断标题是否包含用户输入的关键字包含则保留实现模糊匹配。 五、代码优化建议拓展加分 原代码2秒延迟偏长项目中一般使用 500ms体验更好 // 改为 500毫秒防抖 setTimeout(function () { fieldofsearch() },500); 增加空输入还原全部数据逻辑 if(!data){ initPagination(listData) // 输入为空展示全部数据 return } 六、结语 本篇代码是前端非常经典的 输入框防抖 本地模糊搜索 案例几乎所有后台管理系统都会用到。 核心记住三点 1. clearTimeout setTimeout 实现防抖 2. filter includes 实现模糊搜索 3. 防抖可以有效解决前端高频事件的性能问题

相关新闻

Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置

Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置

更多请点击: https://kaifayun.com 第一章:Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置 2024年Q2 Dify官方基准测试(基于v0.12.0–v0.15.2全量生产环境采样)显示:在…

2026/10/20 0:30:42 阅读更多 →
AI视频配音自动同步:3步实现唇形/语调/节奏100%匹配,附开源工具链与避坑清单

AI视频配音自动同步:3步实现唇形/语调/节奏100%匹配,附开源工具链与避坑清单

更多请点击: https://intelliparadigm.com 第一章:AI视频配音自动同步:技术演进与核心挑战 AI视频配音自动同步正从早期基于固定时长对齐的规则方法,演进为融合语音识别(ASR)、文本-语音对齐(…

2026/10/20 1:23:00 阅读更多 →
AI 数据驱动的增长实验:A/B 测试从设计到决策的全流程

AI 数据驱动的增长实验:A/B 测试从设计到决策的全流程

AI 数据驱动的增长实验:A/B 测试从设计到决策的全流程"把这个按钮颜色改成红色试试?"——多少产品的"增长实验"就始于这样一句话。但作为数据分析师,我们的任务是把这种直觉驱动的尝试变成严谨的数据实验。这篇文章复盘一…

2026/10/20 0:30:44 阅读更多 →

最新新闻

国产ZXDoc突围Vector垄断:文件解析与SDK替换实战解析

国产ZXDoc突围Vector垄断:文件解析与SDK替换实战解析

简介:面向汽车电子与嵌入式研发工程师、新能源车总线测试人员,围绕国产ZXDoc突围Vector垄断主题整理的项目代码资源,可帮助快速了解其在四大车载总线协议支持、DBC智能解析、ECU刷写与XCP标定等方面的技术特性与市场定位。ZIP压缩包体积仅6KB…

2026/10/20 10:07:49 阅读更多 →
STM32Cube FW-F4 V1.27.1:固件包版本管理与HAL迁移避坑指南

STM32Cube FW-F4 V1.27.1:固件包版本管理与HAL迁移避坑指南

简介:ST意法半导体STM32F4系列固件库V1.27.1,专供CubeMX配置工具使用的驱动包,面向嵌入式开发者和硬件工程师,解决F4芯片外设驱动移植、初始化代码生成和软硬件适配问题。压缩包包含230个文件,以96个C源码与102个H头文…

2026/10/20 10:07:49 阅读更多 →
Linux bash从入门到脚本:命令、变量、条件循环与调试手册

Linux bash从入门到脚本:命令、变量、条件循环与调试手册

我到现在还记得第一次打开Linux虚拟机时,屏幕上只有一个孤零零的提示符,等着我输入点什么。周围坐着的同学已经在鼠标点来点去,我却面对着那个黑乎乎的窗口发呆:我该敲什么?它能听懂我说话吗?后来才知道&am…

2026/10/20 10:07:49 阅读更多 →
厂商AI能力对比:别只看跑分,落地效果才是关键

厂商AI能力对比:别只看跑分,落地效果才是关键

1. 我做厂商AI能力对比时踩过的第一个坑:只盯模型跑分1.1 跑分背后的"应试教育"逻辑前两年我负责一个内部智能化项目的选型,当时团队拿到三家厂商的材料,第一反应就是打开公版测试榜单,看谁家模型排得高。最后选了分数最…

2026/10/20 10:07:49 阅读更多 →
OpenClaw访问白屏排查实战:从浏览器到服务端全链路定位

OpenClaw访问白屏排查实战:从浏览器到服务端全链路定位

1. 白屏问题的现象描述与影响范围先说结论:OpenClaw 访问白屏,这个问题我在维护自建网关服务时踩过,处理完回头看,其实根因并不复杂,但排查过程容易走弯路。如果你也遇到了类似情况,页面打开一片空白、控制…

2026/10/20 10:07:49 阅读更多 →
开源wehcat08算法:增量文本聚类的轻量级方案

开源wehcat08算法:增量文本聚类的轻量级方案

简介:开源wehcat08算法的完整源代码包,面向关注iPad协议及自定义算法实现的研究者与Go开发者。该算法虽非通用标准算法,但包内提供了从核心逻辑到运行环境的全套内容,适合用于学习协议处理、TLS加密通信以及Go项目工程化布局。资源…

2026/10/20 10:06:48 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →