ID选择器中的jQuery点? [复制]
Posted
技术标签:
【中文标题】ID选择器中的jQuery点? [复制]【英文标题】:jQuery dot in ID selector? [duplicate] 【发布时间】:2012-04-13 09:45:51 【问题描述】:可能重复:How to select html nodes by ID with jquery when the id contains a dot?
我有一个包含类似元素的网站:
<p id="root.SomeCoolThing">Some Cool Thing</p>
我不能像$('#root.SomeCoolThing')
这样用jQuery选择段落,因为jQuery认为SomeCoolThing
是id="root"
元素的类。
如何使用 jQuery 选择这个元素?我想避免这样的结构:
$(document.getElementById('root.SomeCoolThing'))
【问题讨论】:
***.com/questions/605630/… 虽然有双 `\\` 的解决方案。为什么要在 id 中加一个点? 好吧,这个网站不是我做的。我也不喜欢 ID 名称。更准确地说,它是一个 API 文档。 没有什么可怕的——根据规范,它是一个完全有效的选择器。 mathiasbynens.be/notes/html5-id-class 【参考方案1】:使用jQuery selectors API 中的转义规则如下:
$('#root\\.SomeCoolThing')
来自docs:
使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^`|~
) 作为名称的文字部分,它必须 用两个反斜杠转义:\\
。例如,一个元素id="foo.bar"
,可以使用选择器$("#foo\\.bar")
。
【讨论】:
啊,我明白了。尝试使用一个不起作用的反斜杠。谢谢! 我试过 $('#root\\.SomeCoolThing'),它有效。但是当我尝试使用双引号 $("#root\\.SomeCoolThing") 时,它不起作用。你知道 jQuery 中单引号和双引号的区别吗? 这对我不起作用,我的 id 中有两个或更多点。 @charlietfl 请注意,带反斜杠的点表示法要快得多:jsperf.com/jquery-selectors-perf-test【参考方案2】:您需要转义特殊字符:
$('#root\\.SomeCoolThing')
docs:
如果您希望使用任何元字符(例如 !"#$%&'()*+,./:;?@[]^`|~ ) 作为名称的文字部分,您必须使用两个反斜杠转义字符:\\。例如,如果您有一个带有 id="foo.bar", 的元素,您可以使用选择器 $("#foo\\.bar")。
【讨论】:
【参考方案3】:在每个特殊字符前使用两个反斜杠
$('#root\\.SomeCoolThing')
【讨论】:
【参考方案4】:使用 attr 工作:
$('p[id="root.SomeCoolThing"]')
【讨论】:
'One-liners' 有时不够用。用一句简单的话解释你的想法…… 这也是 jQuery 部分不必要的大量额外处理,您真正需要做的就是转义“.”。字符... @Ian。当您事先不知道 id 时,它很有用。它可能是您从 json 对象中获取的变量。【参考方案5】:这里是从臀部拍摄,但如果您无法更改元素的 ID,请尝试使用此选择器:
$("p[id=root.SomeCoolThing]")
【讨论】:
不是没有""
:错误:语法错误,无法识别的表达式:p[id=details_it.airgap.vault]`【参考方案6】:
你可以使用类似这样的东西来逃避期间
$("#root\\.SomeCoolThing")
How do I get jQuery to select elements with a . (period) in their ID? http://groups.google.com/group/jquery-en/browse_thread/thread/ba072168939b245a?pli=1
【讨论】:
以上是关于ID选择器中的jQuery点? [复制]的主要内容,如果未能解决你的问题,请参考以下文章