2012-07-11 2 views
2

У меня странное поведение, может быть, я что-то упустил.Выбрать элемент dom с jQuery не работает с этим id?

У меня есть этот DOM элемент (Sharepoint ленты элемент, но не имеет значения), который я хочу, чтобы выбрать с JQuery по ID:

<span class="ms-cui-row" 
id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0">...</span> 

Если я выбираю его с именем класса $('.ms-cui-row') я могу выбрать его но с id я не могу $('#Ribbon.EditingTools.CPEditTab.Font-Medium-0-0'). Я даже не могу выбрать его с помощью $('[id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0"]').

Итак, в чем смысл? Может быть, это не очень хорошая идея использовать точки в имени id, но это была Microsoft не я, и я не могу ее изменить. Но, похоже, им хорошо?

Я подготовил jsfiddle, чтобы поиграть с.

+0

Проверьте это: http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F – Chandu

+3

Вы должны бежать!. '" # $% & '() * +,/:; <=>? @ [\]^\ '{|} ~' – david

+0

Microsoft помещает точки на каждом рынке, что Apple имеет даже идентификационные атрибуты. – iambriansreed

ответ

5

Вы не можете использовать . в селекторе jQuery (кроме начала селектора классов), поскольку jQuery будет считать, что он относится к классу элемента. Побег с \\.

Кроме того, селектор id в jQuery равен $("#id").

Ваш новый селектор:

$('#Ribbon\\.EditingTools\\.CPEditTab\\.Font-Medium-0-0') 
+0

Хорошо спасибо за вашу помощь, я ценю это. И я пытался использовать '\', но только один, а не два. Но, как вы видели, это не работает ... – Marc

+0

Проблема заключается в 'document.write', мой плохой: http://jsfiddle.net/ambiguous/RDCMU/ –

+0

@Marc:' '#Ribbon \\ .EditingTools \\. CPEditTab \\. Font-Medium-0-0'' отлично работает. –

2
alert($('#Ribbon\\.EditingTools\\.CPEditTab\\.Font-Medium-0-0').length) 

Работы для меня.

+0

Хм, не для меня ... Я нахожусь в Chrome, в каком браузере вы используете? – Marc

+0

@Marc: Это работает для меня в Safari: http://jsfiddle.net/ambiguous/xf7nP/ –

+0

Ах это работает и для меня, извините, я думаю, что у меня была ошибка в моей скрипке. – Marc

2

Вы можете использовать следующие способы, чтобы выбрать идентификатор со специальными символами:

$('[id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0"]');demo

$('#Ribbon\\.EditingTools\\.CPEditTab\\.Font-Medium-0-0');demo

Ссылки:

Смежные вопросы