javascript中的转义点

javascript中的转义点,javascript,jquery,escaping,Javascript,Jquery,Escaping,如果jQuery选择器包含ID,则无法选择该ID。在里面。 在我的应用程序中,ID name根据用户名动态生成 如何从标记ID中转义任何特殊字符,以便jQuery选择器能够正常工作 例如,ID1:This.Is.ID.1 ID2:这是另一个ID 有人能帮我吗 提前感谢。如果我理解正确,您希望修改包含句点的字符串,使其在每个句点前面都有\\,以便在jQuery选择器中将其作为id支持。以下是如何做到这一点: var username = 'some.username.with.dots'; //

如果jQuery选择器包含ID,则无法选择该ID。在里面。 在我的应用程序中,ID name根据用户名动态生成

如何从标记ID中转义任何特殊字符,以便jQuery选择器能够正常工作

例如,ID1:This.Is.ID.1 ID2:这是另一个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 regex修饰符表示贪婪,如果没有它,replace表达式将只替换第一个。与\\。 编辑 我尝试了我的代码,似乎您需要将replace值更改为\\\\。使其成为\\


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

<div id='foo.bar'></div>
使用两个反斜杠来逃避它们的状态

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

使用\\双反斜杠转义特殊字符

$('#this\\.something')

官方jQuery常见问题解答有一个确切的问题:它们甚至有一个帮助您逃离的功能。引用它:

。。。冒号:和句号。在jQuery选择器的上下文中是有问题的,因为它们分别表示伪类和类

为了告诉jQuery按字面意思处理这些字符,而不是按CSS表示法处理,必须在它们前面放置两个反斜杠来对它们进行转义

以下函数负责转义这些字符,并在ID字符串的开头放置一个:

function jq( myid ) {
    return "#" + myid.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
}
该函数可以这样使用:

$( jq( "some.id" ) )

Regex escape是一个单独的\n请您写出Regex的完整代码。您需要这个的具体情况是什么?首先讨论jQuery选择器,然后问如何在regex中转义点。jQuery选择器无法选择,所以我需要转义ID来告诉jQuery如何使用转义ID。我想这就是方法,不确定…:RTFM:使用任何元字符,如!$%&'*+,./:@[]^`{124;}~作为名称的文字部分,必须用两个反斜杠转义:\\。句点不应用于类或ID。我想这可能不可取,但它是完全有效的HTML。你是对的,先生:-我会调整我的答案。你有一个HTML4链接。这是HTML5,定义了类链接引用。我不确定把一条丑陋的线分成三条丑陋的线是好是坏。也许编写一个隐藏这种丑陋的小jQuery扩展会更好。类似于$.selectandscape'some.username.with.dots','...............我只是想逃避,你的代码完全适合我。非常感谢。
function jq( myid ) {
    return "#" + myid.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
}
$( jq( "some.id" ) )