jQuery dot in ID selector? [duplicate]

2019-01-04 11:10发布

Possible Duplicate:
How to select html nodes by ID with jquery when the id contains a dot?

I have a website that contains elements similar to this:

<p id="root.SomeCoolThing">Some Cool Thing</p>

I can not select the paragraph with jQuery like $('#root.SomeCoolThing') because jQuery thinks, SomeCoolThing is the class of an element with id="root".

How can I select this element with jQuery? I would like to avoid a construction like this:

$(document.getElementById('root.SomeCoolThing'))

6条回答
放我归山
2楼-- · 2019-01-04 11:47

Use the escaping rules from the jQuery selectors API as follows:

$('#root\\.SomeCoolThing') 

From the docs:

To use any of the meta-characters (such as !"#$%&'()*+,./:;<=>?@[\]^`{|}~) as a literal part of a name, it must be escaped with with two backslashes: \\. For example, an element with id="foo.bar", can use the selector $("#foo\\.bar").

查看更多
唯我独甜
4楼-- · 2019-01-04 11:50

Use two backslashes before each special character

  $('#root\\.SomeCoolThing')
查看更多
放我归山
5楼-- · 2019-01-04 11:53

Shooting from the hip here, but if you cannot change the ID of the element, try using this selector:

$("p[id=root.SomeCoolThing]")
查看更多
萌系小妹纸
6楼-- · 2019-01-04 11:59

You need to escape special chars:

$('#root\\.SomeCoolThing')

docs:

If you wish to use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~ ) as a literal part of a name, you must escape the character with two backslashes: \\. For example, if you have an element with id="foo.bar", you can use the selector $("#foo\\.bar").

查看更多
爷、活的狠高调
7楼-- · 2019-01-04 12:00

Using attr works:

$('p[id="root.SomeCoolThing"]')
查看更多
登录 后发表回答