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

jQuery设置多选菜单选中项未生成selected=selected属性问题求助

问题根因
  • HTML属性(attribute,即写在标签上的可见属性)和DOM运行时属性(property,JS内存中存储的节点状态)是两套独立的体系:

selected属于布尔类型的属性,你使用attr("selected", true)实际修改的是DOM节点的运行时property,只会控制页面的视觉选中效果,不会自动同步到HTML标签的selected="selected"属性上。你接入的多选组件仅读取标签上的attribute属性,所以无法识别已选状态。

  • jQuery 1.6及以上版本对attr()和prop()的操作逻辑做了明确拆分:

attr()用于读写HTML标签上的静态属性,prop()用于读写DOM节点的动态运行时状态。你当前的写法会被jQuery内部默认判定为操作property,不会修改标签上的attribute。

修复方案
  • 方案一:直接给attr()传入字符串selected作为属性值,强制写入HTML attribute:
jQuery("#e_docs_jobCheckList_0 option[value=" + tmpId + "]").attr("selected", "selected");
  • 方案二:调用原生DOM的setAttribute方法写入属性,绕过jQuery的逻辑封装:
jQuery("#e_docs_jobCheckList_0 option[value=" + tmpId + "]")[0].setAttribute("selected", "selected");
  • 方案三:如果批量操作多个选项,可在所有选中状态设置完成后,调用第三方多选组件的刷新方法重新读取状态(不同组件方法名可能有差异,以组件文档为准):
// 以常用的jQuery MultiSelect组件为例
jQuery("#e_docs_jobCheckList_0").multiSelect('refresh');

问题效果展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:24:01