Axl Rose的wiki页面包含一个id为
的元素1983.E2.80.931986:_Early_years
我使用$('#1983.E2.80.931986:_Early_years')
来获取此元素,但失败了。
如果我想通过ID选择此元素,那么正确的选择器是什么?
答案 0 :(得分:17)
直接来自the docs:
如果您想使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^&a{|}~
)作为名字的字面部分,你必须 用两个反斜杠转义角色:\\.
例如,如果你 拥有id="foo.bar"
的元素,您可以使用选择器$("#foo\\.bar")
。
推论:
jQuery.escapeSelector = function(str) {
return str.replace(/[!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
}
// ...
$('#' + $.escapeSelector('1983.E2.80.931986:_Early_years'))
答案 1 :(得分:3)
由于存在这些类型的字符,我个人发现最简单,最易读的方法是按ID搜索,例如:
$('[id*="1983.E2.80.931986:_Early_years"]') // will search for the ID anywhere
比逃避角色等更简单,更容易混淆。特别是,因为如果你以某种方式更改了ID名称,你就不必担心它的命名。
如果您从后端代码中动态构建此ID ,这是最有意义的,它将始终正确地准备并运行。
答案 2 :(得分:3)
你可以使用javascript
的document.getElementById( '1983.E2.80.931986:_Early_years')
答案 3 :(得分:1)
转义:
和.
$('#1983\\.E2\\.80.931986\\:_Early_years')
答案 4 :(得分:1)
:会中断选择,因为它是由css伪类保留的(例如:hover)。尝试反斜杠:
答案 5 :(得分:1)
Escape it使用'\\':
$('#1983\\.E2\\.80\\.931986\\:_Early_years')