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

如何使用jQuery获取UL/LI元素值并提取关联城市列表

实现方案及问题解答

1. 提取城市数组的基础实现

如果暂时固定id匹配的场景,直接遍历目标ul下的li提取文本即可:

const cityArr = $('#ui-id-180 li.ui-menu-item').map(function() {
  return $(this).text().trim();
}).get();

上述代码通过map()遍历所有匹配的li节点提取文本,最后用get()方法将jQuery集合转成普通数组。

2. 关于ul的id是否会变化

你使用的是jQuery UI Autocomplete组件,ui-id-xxx格式的id属于组件动态生成的临时id,每次页面刷新、组件重新初始化时都会自动变化,绝对不能写死id作为选择器使用,否则后续一定会失效。

3. 输入框与下拉ul的关联逻辑

jQuery UI Autocomplete组件本身就会自动绑定输入框和对应生成的下拉ul,每个初始化了autocomplete的输入框,都可以直接调用autocomplete('widget')方法获取到属于它的下拉ul元素,不需要手动通过id、class匹配,天然就能过滤其他无关的ul节点。

4. 多ul场景下的过滤优化方案

结合你现有的输入框获取逻辑,直接从目标输入框关联对应的ul提取数据即可,不会拿到其他冗余值:

// 先获取城市输入框实例
const $cityInput = $("[name=" + City.GetInputName() + "]");
// 从输入框关联的下拉组件提取城市数组
const cityArr = $cityInput.autocomplete("widget").find('li.ui-menu-item').map(function() {
  return $(this).text().trim();
}).get();

如果需要在输入框keyup时实时获取数组,直接整合到你的事件回调即可:

$("[name=" + City.GetInputName() + "]").keyup(function(eventObject){
  const cityArr = $(this).autocomplete("widget").find('li.ui-menu-item').map(function() {
    return $(this).text().trim();
  }).get();
  // 你自己的业务逻辑,比如给Source输入框赋值
  $("[name=" + Source.GetInputName() + "]").val(/* 你的处理逻辑 */);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:06:09