如果jQuery选择器中包含.
,则无法选择它。
在我的应用程序ID名称中动态生成用户名。javascript中的转义点
如何从标记ID中转义任何特殊字符,以便jQuery选择器正常工作?
例如,ID1:This.Is.ID.1
ID2:This.is.Another.ID
谁能帮我。
在此先感谢。
如果jQuery选择器中包含.
,则无法选择它。
在我的应用程序ID名称中动态生成用户名。javascript中的转义点
如何从标记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
正则表达式修饰符意味着贪心,没有它的替换表达式只会替换第一个.
与\\.
编辑 我想我的代码,好像你需要更改替换值\\\\.
使它成为\\.
你实际上并不需要ŧ远离ID的。。您只需要转义选择器中的任何特殊字符。例如,选择下列元素:
<div id='foo.bar'></div>
...您可以使用:
$('#foo\\.bar');
的the jQuery documentation指出两个反斜杠被用来逃避它们。
所以,你的例子会用$("#This\\.Is\\.ID\\.1")
“期间不应该用于类或ID” 。我想这可能不是可取的,但它是完全有效的HTML。 – jmar777
你是对的,先生:http://www.w3.org/TR/html4/types.html#type-id - 我会twea k我的答案。 – STW
你有一个HTML4链接。这里是HTML5 ['id' link](http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute)和['class' link](http ://www.w3.org/html/wg/drafts/html/master/dom.html#classes)定义了[“空格分隔标记”](http://www.w3.org/html/wg/class /链接引用的/drafts/html/master/infrastructure.html#set-of-space-separated-tokens)。 – ajp15243
官方jQuery的常见问题有确切的问题:How do I select an element by an ID that has characters used in CSS notation?他们甚至有一个功能来帮助你逃脱。引用它:
...冒号(“
:
‘)和周期(’.
”)分别是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"))
正则表达式转义是一个单独的\ –
你能写出正则表达式的全行代码吗? – Pars
究竟是什么情况,你需要这个?首先你谈论jQuery选择器,但是然后你会问如何在正则表达式中转义点。 – JJJ