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