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

如何用jQuery获取动态生成的select选中值?当前仅能获取默认值

解决动态生成Select无法获取选中值的问题

我来帮你排查这个问题,核心问题出在重复的ID设置和错误的选中值获取逻辑上,咱们一步步来修正:

问题1:重复的ID导致选择器失效

你在PHP循环里给每个<option>都加了id='tstSelected',但页面内的ID必须是唯一的——浏览器只会识别第一个带这个ID的元素,这就是你永远拿到默认值的根本原因。

应该把ID绑定到<select>标签上,而不是每个选项:

if($(this).hasClass('fa-pencil')){
 $.each(currentTD, function () {
  if($(this).hasClass('editable')){
   if($(this).hasClass('getFromSelect')){
    // 把ID移到select上,option去掉重复ID
    $(this).html("<select id='tstSelected'>" + "<?php foreach($test as $tst){ echo "<option value='$tst->tst_idx'>". $tst->tst_desc . $tst->tst_idx ."</option>"; } ?>" + "</select>");
   }
   $(this).prop('contenteditable', true);
  }
 });
 $(this).removeClass('fa-pencil').addClass('fa-check')
 editing = true;
}

问题2:简化选中值的获取逻辑

获取select选中值不需要遍历option,直接调用select的val()方法就可以拿到选中option的value;如果需要文本,再用option:selected筛选:

// 获取选中值(推荐写法)
var selectedValue = $('#tstSelected').val();

// 获取选中的文本
var selectedText = $('#tstSelected option:selected').text();

额外提醒:多动态Select的场景

如果页面里有多个可编辑单元格(会生成多个select),那tstSelected这个ID还是会重复,建议改用类名代替ID:

// 生成时用类名
$(this).html("<select class='tstSelected'>" + "...option代码..." + "</select>");

// 获取时根据上下文定位(比如当前编辑的行)
var selectedValue = $(this).closest('tr').find('.tstSelected').val();

动态元素的事件监听(可选)

如果需要实时监听选中变化,因为是动态生成的元素,要使用事件委托:

$(document).on('change', '.tstSelected', function(){
  console.log("当前选中值:", $(this).val());
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:11:38