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

$.each循环中jQuery UI Autocomplete首次迭代结果不显示问题

jQuery UI Autocomplete 首次迭代数据源不显示问题排查

问题根因

你在$.each循环内重复对同一个输入框调用autocomplete()初始化方法,jQuery UI Autocomplete组件多次初始化时,新配置会直接覆盖旧配置,而非叠加数据源。第一次循环配置的Result 1~3数据源会被第二次循环的Result 4~6覆盖,第二次的又会被第三次的Result 7~9覆盖。你能搜到Result 4~9属于偶现的逻辑异常,本质是重复初始化组件导致的配置冲突,同时原代码还存在闭包问题:所有搜索结果点击后都会跳转到最后一条数据的pageLink,无法对应到各自的页面。

修复方案

提前聚合所有数据源,仅对输入框做一次Autocomplete初始化即可。

原HTML代码(无需调整)

<input type="text" name="searchKeywords" id="ninecSearchKeywords" placeholder="How To...">

修正后JS逻辑

jQuery(document).ready(function($){
    $.getJSON("apiUrl", function(data){
        // 聚合所有搜索条目,绑定关键词对应跳转链接
        let searchSource = [];
        $.each(data, function(key, value){
            $.each(value.keys, function(idx, keyword){
                searchSource.push({
                    label: keyword,
                    value: keyword,
                    pageLink: value.pageLink
                });
            });
        });
        // 仅初始化一次Autocomplete组件
        $("#ninecSearchKeywords").autocomplete({
            source: searchSource,
            autoFocus: true,
            select: function (event, ui) {
                window.location = ui.item.pageLink;
            }
        });
    });
});

优化说明

  • 所有关键词统一聚合后再绑定组件,不会出现配置覆盖导致的数据源丢失问题
  • 修复循环闭包缺陷,每个关键词点击后可跳转到对应配置的页面链接
  • 减少重复初始化操作,组件运行性能更稳定

内容的提问来源于stack exchange,提问作者Wasim Sayyed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:18:03