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").
Ответ 4
Вы можете избежать периода, используя что-то вроде этого
$("#root\\.SomeCoolThing")
Как получить jQuery для выбора элементов с помощью. (период) в их идентификаторе?
http://groups.google.com/group/jquery-en/browse_thread/thread/ba072168939b245a?pli=1
Ответ 5
Съемка с бедра здесь, но если вы не можете изменить идентификатор элемента, попробуйте использовать этот селектор:
$("p[id=root.SomeCoolThing]")
Ответ 6
Используйте две обратные косые черты перед каждым специальным символом
$('#root\\.SomeCoolThing')