如果 ID 中包含 a,则 jQuery 选择器无法选择.
它。
在我的应用程序 ID 名称中从用户名动态生成。
如何从标签 ID 中转义任何特殊字符,以便 jQuery 选择器正常工作?
例如,ID1:This.Is.ID.1
ID2:This.is.Another.ID
谁能帮我。
提前致谢。
如果 ID 中包含 a,则 jQuery 选择器无法选择.
它。
在我的应用程序 ID 名称中从用户名动态生成。
如何从标签 ID 中转义任何特殊字符,以便 jQuery 选择器正常工作?
例如,ID1:This.Is.ID.1
ID2:This.is.Another.ID
谁能帮我。
提前致谢。
如果我理解正确,您想修改一个包含句点的字符串,使其在每个句点前面都有 \\,以便在 jQuery 选择器中作为 id 支持。以下是如何做到这一点:
var username = 'some.username.with.dots';
// Replace all periods with \\. to
username = username.replace(/\./g, '\\\\.');
// find element that matches #some\\.username\\.with\\.dots
$('#' + username).doSomethingWithjQuery();
.
在正则表达式中表示“任何字符”,因此您需要通过放在\
前面来逃避它。g
则表达式修饰符意味着贪婪,没有它替换表达式只会替换第.
一个\\.
编辑
我尝试了我的代码,看来您需要更改替换值以\\\\.
使其成为\\.
官方的 jQuery FAQ 有这个确切的问题:如何通过 ID 选择一个元素,该 ID 具有用于 CSS 表示法中的字符?它们甚至具有帮助您逃脱的功能。引用它:
...冒号 ("
:
") 和句点 (".
") 在 jQuery 选择器的上下文中是有问题的,因为它们分别表示伪类和类。为了告诉 jQuery 将这些字符按字面意思处理而不是 CSS 符号,必须通过在它们前面放置两个反斜杠来“转义”它们。
// Does not work:
$( "#some:id" )
// Works!
$( "#some\\:id" )
// Does not work:
$( "#some.id" )
// Works!
$( "#some\\.id" )
以下函数负责转义这些字符并在 ID 字符串的开头放置一个“#”:
function jq( myid ) {
return "#" + myid.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
}
该函数可以像这样使用:
$( jq( "some.id" ) )
jQuery 文档声明使用两个反斜杠来转义它们。
所以你的例子会使用$("#This\\.Is\\.ID\\.1")
您实际上不需要将 . 从 id 远程。您只需要转义选择器中的任何特殊字符。例如,要选择以下元素:
<div id='foo.bar'></div>
... 您可以使用:
$('#foo\\.bar');