在JavaScript中转义点

如果jQuery选择器包含a,则它无法选择ID . 在里面。
在我的应用程序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(); 
  • . 在正则表达式中表示“任何字符”,因此您需要通过将\ in放在前面来逃避它。
  • g正则表达式修饰符意味着贪婪,没有它,替换表达式只会替换第一个.\\.

编辑我尝试了我的代码,似乎你需要将替换值更改为\\\\. 使它成为\\.

JS控制台

官方jQuery常见问题解答有一个确切的问题: 如何通过具有CSS表示法中使用的字符的ID选择元素? 它们甚至可以帮助您逃脱。 引用它:

…冒号(“ : ”)和句点(“ . ”)在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" ); } 

该function可以这样使用:

 $( jq( "some.id" ) ) 

使用\\ (双反斜杠)来转义特殊字符。

 $('#this\\.something') 

小提琴

你实际上并不需要从id远程调用。 您只需要转义选择器中的任何特殊字符。 例如,要选择以下元素:

 

… 您可以使用:

 $('#foo\\.bar'); 

jQuery文档声明两个反斜杠用于转义它们。

所以你的例子会使用$("#This\\.Is\\.ID\\.1")