【问题标题】:Cannot use query selector with id's that includes "." [duplicate]不能使用包含“。”的 id 的查询选择器。 [复制]
【发布时间】:2018-03-06 01:23:45
【问题描述】:

假设我有一个<li id="gen__1002_____46.14_li">

我想选择这个li

为了能够实现它,我写道,

var id="gen__1002_____46.14_li";
document.querySelector("#" + id);

但是 querySelector 返回为;

Failed to execute 'querySelector' on 'Element': '#gen__1002_____46.14' is not a valid selector.

id 不包含dot 字符时,它会正确选择。

我的问题是,如何选择 id 包含 . char 的 html dom 元素。是否有任何限制 id 不能包含. char。

我有什么解决方案,而不是删除 id 中的 .。

【问题讨论】:

  • 试试$('#gen__1002_____46\\.14_li');
  • 我已经试过了,但是返回为;未捕获的 DOMException:无法在“元素”上执行“querySelector”:“#gen__1002_____46\\.14”不是有效的选择器。

标签: javascript html jquery-selectors selector


【解决方案1】:

你需要转义点

$('#thisIs\\.anId') // will select <span id="thisIs.anId">test</span>

在纯js中:

var id="gen__1002_____46.14_li";
id = id.replace(/\./g, '\\\\.'); // escaping dots using regex
document.querySelector("#" + id);

编辑

如果你只想按 id 选择元素,请使用getElementById()

document.getElementById(id);

【讨论】:

  • 我已经试过了,但是返回为; Uncaught DOMException: Failed to execute 'querySelector' on 'Element': '#gen__1002_____46\\.14' is not a valid selector.
  • @mmu36478 你用的是什么浏览器?
  • @mmu36478 检查更新的答案
  • 如果你使用document.getElementById,你不需要哈希:)
  • @Terry,对不起,我的错误...谢谢指出
猜你喜欢
  • 2013-11-23
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多