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

如何使用jQuery获取包含input字段值的元素文本内容

实现包含input值的元素搜索过滤

你的原始搜索过滤函数仅通过$(this).text()获取元素文本,无法识别input这类表单控件的输入值。这里提供几个优化思路和实现方案:

优化思路1:统一封装可搜索内容获取逻辑

可以单独封装一个函数,一次性获取元素的文本内容 + 所有表单控件的有效值,不用分开拼接:

function getSearchableContent($element) {
    // 先获取元素本身的文本内容
    let content = $element.text().trim();
    // 遍历所有常见表单控件,追加有效值
    $element.find('input, select, textarea').each(function() {
        const val = $(this).val().trim();
        if (val) {
            content += ' ' + val;
        }
    });
    return content;
}

function searchFilter(root, selector, regex) {
    root.find(selector).each(function() {
        const $item = $(this);
        $item.toggle(regex.test(getSearchableContent($item)));
    });
}

该方案优势:

  • 支持更多表单控件(select、textarea也能覆盖)
  • 自动过滤空值,避免无效空白字符干扰匹配
  • 代码模块化,getSearchableContent可复用在其他场景

优化思路2:简化临时实现

如果只需要支持input控件,也可以简化你的临时方案,用jQuery的map方法减少冗余代码:

function searchFilter(root, selector, regex) {
    root.find(selector).each(function() {
        const $el = $(this);
        const inputValues = $el.find('input').map(function() {
            return $(this).val();
        }).get().join(' ');
        $el.toggle(regex.test($el.text() + ' ' + inputValues));
    });
}

细节优化点:

  • 将filter改为each更直观,因为我们是对每个元素执行显隐操作,而非筛选元素后操作
  • 用map+get组合可以更简洁地收集input值,无需手动声明数组并push

额外提示

如果页面存在动态新增的input元素,记得在输入变化或元素新增时重新触发搜索过滤逻辑,确保新输入的值能被识别。

内容的提问来源于stack exchange,提问作者Nikki Locke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:06:00