在JavaScript中转义点

时间:2013-10-25 18:03:19

标签: javascript jquery escaping

jQuery选择器如果包含.,则无法选择ID 在我的应用程序ID名称中,从用户名动态生成。

如何从标记ID 中转义任何特殊字符,以便jQuery选择器运行良好?

例如,ID1:This.Is.ID.1 ID2:This.is.Another.ID

任何人都可以帮助我。

提前致谢。

5 个答案:

答案 0 :(得分:14)

如果我理解正确,你想修改一个包含句点的字符串,在每个句点前面都有\\,作为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正则表达式修饰符意味着贪婪,没有它,替换表达式只会将第一个.替换为\\.

修改 我尝试了我的代码,似乎您需要将替换值更改为\\\\.以使其成为\\.

JS Console

答案 1 :(得分:9)

官方jQuery常见问题解答有一个确切的问题: How do I select an element by an ID that has characters used in CSS notation? 他们甚至可以帮助您逃脱。引用它:

  

...冒号(“:”)和句点(“.”)在jQuery选择器的上下文中是有问题的,因为它们分别表示伪类和类。 / p>      

为了告诉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" ) )

答案 2 :(得分:1)

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

$('#this\\.something')

Fiddle

答案 3 :(得分:0)

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

<div id='foo.bar'></div>

......你可以使用:

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

答案 4 :(得分:0)

the jQuery documentation表示使用两个反斜杠来转义它们。

因此,您的示例将使用$("#This\\.Is\\.ID\\.1")