JQuery: обработка пробела в атрибуте id
У меня есть элемент с id = "A B". Следующий код не работает:
<input type="text" id="A B">
<script>$("#A B").click(function(){alert();});</script>
Следующий код не работает:
<input type="text" id="AB">
<script>$("#AB").click(function(){alert();});</script>
Ответы
Ответ 1
В то время как технически недействительно иметь место в значении атрибута ID в HTML (см. ответ @karim79s), вы можете выбрать его с помощью jQuery.
См. http://mothereffingcssescapes.com/#A%20B:
<script>
// document.getElementById or similar
document.getElementById('A B');
// document.querySelector or similar
$('#A\\ B');
</script>
jQuery использует синтаксис типа API-переключателей, поэтому вы можете использовать $('#A\\ B');
для выбора элемента с id="A B"
.
Чтобы настроить элемент в CSS, вы можете избежать его следующим образом:
<style>
#A\ B {
background: hotpink;
}
</style>
Ответ 2
Ни HTML4, ни HTML5 не допускают пробельные символы в значениях атрибута ID.
В спецификации HTML 4.01 указано, что маркеры ID должны начинаться с буквы ([A-Za-z]), и за ним может следовать любое количество букв, цифр ([0-9]), дефисы (-), подчеркивания (_), двоеточия (:) и периоды (.). Для атрибута класса такого ограничения нет. Классные имена могут содержат любой символ, и им не нужно начинать с буквы Действительны.
HTML5 избавляется от дополнительных ограничений на атрибут id. останутся только требования - кроме того, что они уникальны в документе - что значение должно содержать по крайней мере один символ (не может быть пустым), и что он не может содержать любые пробельные символы.
Источник:
http://mathiasbynens.be/notes/html5-id-class
Ответ 3
Как уже упоминалось, вы не должны использовать пробелы в id.
Но в любом случае, не будет ли это работать на вас?
$("[id='A B']").click(...)
EDIT: да, это работает, проверено! Не убивай меня, рядовые!;-P
Ответ 4
В id не должно быть пробела, но это, похоже, работает:
$("[id=A B]")
Ответ 5
ID tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Эта цитата извлекается из другого ответа stackoverflow: идентификаторы jquery с пробелами