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

jQuery/JS如何获取表格行内当前select相邻的目标select元素

问题根因

$(this).closest('.city-elem')获取不到元素的核心原因是:jQuery的closest()方法只会向上遍历当前元素的DOM祖先链,查找符合选择器的祖先节点。你要定位的.city-elem和触发change事件的.state-elem是分属不同<td>的平级节点,不在state元素的祖先链上,因此会返回长度为0的空jQuery对象。

正确获取方案

要精准定位同一行的city下拉框,优先使用「先定位共同父级容器,再在容器范围内查找目标元素」的逻辑,该写法不依赖列的固定顺序,鲁棒性更强:

  • 第一步:从当前触发事件的state下拉框出发,向上查找它所属的<tr>表格行
  • 第二步:在找到的当前行范围内,查找.city-elem元素,只会匹配到同一行的城市下拉框,不会干扰其他行的元素

对应实现代码:

function shop_address_update(elem) {
  // 定位当前元素所在的表格行
  const $currentRow = $(elem).closest('tr');
  // 获取同一行的城市下拉框
  const $citySelect = $currentRow.find('.city-elem');

  // 后续填充选项逻辑参考
  $citySelect.empty(); // 清空原有选项
  // 拿到对应省份/州下的城市列表后,循环追加选项即可
  // cityList.forEach(city => {
  //   $citySelect.append(`<option value="${city.value}">${city.label}</option>`)
  // })
}

如果能完全确定表格列顺序不会调整,也可以用相邻节点查找的简写方式:

const $citySelect = $(elem).parent('td').next('td').find('.city-elem');

该写法依赖state列的下一个td固定为city列,后续如果调整表格列顺序会直接失效,不推荐优先使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:45:48