ID选择器中的jQuery点?

Nik*_*s R 125 jquery jquery-selectors

可能重复:
当id包含点时,如何通过ID和jquery选择html节点?

我有一个网站,其中包含与此类似的元素:

<p id="root.SomeCoolThing">Some Cool Thing</p>
Run Code Online (Sandbox Code Playgroud)

我不能用jQuery选择段落,$('#root.SomeCoolThing')因为jQuery认为,SomeCoolThing是一个元素的类id="root".

如何用jQuery选择这个元素?我想避免像这样的结构:

$(document.getElementById('root.SomeCoolThing'))
Run Code Online (Sandbox Code Playgroud)

cha*_*tfl 236

使用jQuery选择器API中的转义规则,如下所示:

$('#root\\.SomeCoolThing') 
Run Code Online (Sandbox Code Playgroud)

来自文档:

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[\]^`{|}~)作为名称的文字部分,必须使用两个反斜杠进行转义:\\.例如,带有的元素 id="foo.bar"可以使用选择器$("#foo\\.bar").

  • 它对我不起作用,我的 ID 中有两个或更多点。 (2认同)
  • @charlietfl请注意,带反斜杠的点符号要快得多:http://jsperf.com/jquery-selectors-perf-test (2认同)

mik*_*ans 39

使用attr工作:

$('p[id="root.SomeCoolThing"]')
Run Code Online (Sandbox Code Playgroud)

  • @Ian.当你事先不知道id时,它很有用.它可以是从json对象获得的变量. (10认同)
  • "单行"有时候不够用.除了简单的陈述之外,解释你的想法...... (2认同)
  • 这也是jQuery部分的大量额外处理,这是不必要的,你真正需要做的就是逃避".".字符... (2认同)

gdo*_*ica 17

你需要逃脱特殊的角色:

$('#root\\.SomeCoolThing')
Run Code Online (Sandbox Code Playgroud)

文档:

如果你想使用任何元字符(例如!"#$%&'()*+,./:; <=>?@ [] ^`{|}〜)作为字面的一部分name,你必须使用两个反斜杠来转义字符:\\.例如,如果你有一个id ="foo.bar"的元素,你可以使用选择器$("#foo \\.bar").