JQuery точка в ID селектор?

Возможный дубликат:
Как выбрать html-узлы по ID с jquery, когда идентификатор содержит точку?

У меня есть веб-сайт, содержащий элементы, подобные этому:

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

Я не могу выбрать абзац с jQuery как $('#root.SomeCoolThing'), потому что jQuery думает, SomeCoolThing - это класс элемента с id="root".

Как я могу выбрать этот элемент с помощью jQuery? Я хотел бы избежать такой конструкции:

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

Ответ 1

Используйте правила экранирования из API-переключателей jQuery следующим образом:

$('#root\\.SomeCoolThing') 

В документах:

Чтобы использовать любой из метасимволов (например, !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~) как буквальная часть имени, он должен сбежать с двумя обратными косыми чертами: \\. Например, элемент с id="foo.bar", можно использовать селектор $("#foo\\.bar").

Ответ 2

Использование attr works:

$('p[id="root.SomeCoolThing"]')

Ответ 3

Вам нужно избегать специальных символов:

$('#root\\.SomeCoolThing')

docs:

Если вы хотите использовать любой из метасимволов (например, ! "# $% & '() * +,./:; <= > ? @[] ^` {|} ~) в качестве литеральной части имени, вы должны избегать символа с двумя обратными косыми чертами: \\. Например, если у вас есть элемент с id =" foo.bar ", вы можете использовать селектор $(" # foo \\. bar").

Ответ 5

Съемка с бедра здесь, но если вы не можете изменить идентификатор элемента, попробуйте использовать этот селектор:

$("p[id=root.SomeCoolThing]")

Ответ 6

Используйте две обратные косые черты перед каждым специальным символом

  $('#root\\.SomeCoolThing')