И если да, как вы выбираете on с jQuery? I.e., $("#a b")
ищет все <b>
узлы в node с id=a
.
Может ли элемент DOM иметь идентификатор, содержащий пробел?
Ответ 1
В соответствии с спецификацией HTML 4.0 для базовых типов:
Идентификаторы идентификатора и NAME должны начинаться с письмо ([A-Za-z]) и может быть выполнено любым количеством букв, цифр ([0-9]), дефис ( "-" ), подчеркивание ( "_" ), двоеточия ( ":" ) и периоды ( "").
И даже если пробелы были действительными, атрибут id с пробелами будет интерпретироваться jQuery как
Ответ 2
Короткий ответ - нет. Буквы, цифры, символы подчеркивания, дефисы, периоды и двоеточия.
(черт, карим избил меня.)
Ответ 3
Хотя это старый вопрос, мне показалось, что я бы поделился информацией о спецификации HTML 5 для тех, кто сталкивался с этим вопросом, как и через несколько лет после его запроса.
В соответствии с HTML 5 Spec:
Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ. Значение не должно содержать пробелов.
В нем также говорится:
Нет никаких других ограничений на то, какую форму может принять идентификатор; в частности, идентификаторы могут состоять только из цифр, начинаться с цифры, начинаться с подчеркивания, состоять только из знаков пунктуации и т.д.
Ответ 4
Это аргумент по аналогии.
Рассмотрим селектор CLASS. Не то же самое, что ID, но есть сходства.
Вы, очевидно, не можете иметь имя класса со встроенным пространством, потому что список классов
<p class='a b c'>some text</p>
нельзя отличить от одного имени с пробелами.
Хорошо, у вас не может быть списка имен имен, так или иначе, поэтому аналогия разваливается, но я думаю, что мы слишком быстро пытались вставить пробелы, где они не принадлежат.