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

jQuery如何通过单个ID选择器为含多ID值的Div写入文本?

解决jQuery选择带空格ID元素的问题

嘿,这个场景我熟!首先得提一句:HTML规范里ID属性是不允许包含空格的,这属于不规范写法,后续可能会引发其他兼容问题。不过既然你已经这么写了,咱们来搞定怎么正确选中这个元素~

为什么你的现有代码不行?

你调用fn('b')时,传入的参数是'b',但目标元素的ID是"a b",参数本身就传错了;就算你改成传'a b',直接用$('#' + k)会生成选择器$('#a b')——这会被jQuery解析为「选中ID为a的元素下的所有<b>标签」,而不是ID为"a b"的元素,自然达不到预期效果。

两种可行的解决方案

方案1:使用属性选择器精确匹配ID

直接用jQuery的属性选择器,通过[id="xxx"]的形式精确匹配带空格的ID,代码修改如下:

function fn(k) {
  $('[id="' + k + '"]').text('test');
}

然后调用的时候传入完整的ID:

<div id="a b">
  <script>fn('a b');</script>
</div>

方案2:借助原生JS的getElementById

原生的getElementById可以直接识别带空格的ID(虽然不符合规范,但浏览器实际支持),拿到DOM元素后再转成jQuery对象即可:

function fn(k) {
  $(document.getElementById(k)).text('test');
}

调用同样需要传入完整ID:fn('a b')

更建议的做法

最好还是修改ID,去掉空格,比如改成"a-b"、"a_b"或者"ab",这样就可以用常规的ID选择器$('#a-b')来选中元素,完全避免这类奇怪的问题,也符合HTML规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:41:50