发布于: 使用 jQuery 核心 > 常见问题

如何通过 ID 选择包含 CSS 符号字符的元素?

因为 jQuery 使用 CSS 语法来选择元素,所以一些字符会被解释为 CSS 符号。为了让 jQuery 将这些字符视为字面值而不是 CSS 符号,必须在这些字符前面放置两个反斜杠来对其进行转义。有关更多详细信息,请参阅选择器文档

1
2
3
4
5
6
7
8
9
10
11
// Does not work:
$( "#some:id" )
// Works!
$( "#some\\:id" )
// Does not work:
$( "#some.id" )
// Works!
$( "#some\\.id" )

在 jQuery 3.0 或更高版本中,应使用函数 jQuery.escapeSelector() 来转义此类选择器。

否则,以下函数会处理这些字符的转义,并在 ID 字符串开头放置一个 "#" 以方便使用

1
2
3
4
5
function escapeSelector( myid ) {
return "#" + myid.replace( /(\/|:|\.|\[|\]|,|=|@)/g, "\\$1" );
}

该函数可以像这样使用

1
$( escapeSelector( "some.id" ) )