#jquery #firefox
#jquery #firefox
Вопрос:
Мне просто интересно, почему мое событие jquery не запускается в FireFox, когда я использую числовые значения в своих тегах ID
Нравится ($"#2").live .....
и <div id='2' .....
я заметил, что события не запускаются таким образом и только в FireFox. Любые объяснения приветствуются.
Комментарии:
1. Потому что числа не являются допустимыми первыми символами для атрибутов
id
илиclass
.2. Из любопытства, был ли ответ на этот вопрос удовлетворительным для вас? Или у вас возникли дополнительные проблемы?
Ответ №1:
Маркеры идентификатора и ИМЕНИ должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов («-«), подчеркиваний («_»), двоеточий («:») и точек («.»). Цитата: ссылка на html 4 в W3.
Таким образом, ваш id
недопустим, поскольку он начинается с числового символа.
Однако в HTML 5 id
требуется только иметь:
Атрибут id задает уникальный идентификатор элемента (ID). Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ. Значение не должно содержать пробелов.
Комментарии:
1. Я второй в этом посте. idName-1, idName-2 и др. возможно, это подходящая схема именования. Затем я бы использовал регулярное выражение для анализа такой строки. например, так: //установить регулярное выражение var re = /(^w -) ( d ) $/i; //разбить attr на части var str = $(this).attr(‘id’).match(re)[1], id = $(this).attr(‘id’).match(re)[2];
Ответ №2:
Недопустимо HTML4
иметь идентификаторы, начинающиеся с числа.
Вы должны начинать их с буквы.
Однако в HTML5
разрешены числовые идентификаторы.
Ответ №3:
Значения идентификаторов для элементов html должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов («-«), подчеркиваний («_»), двоеточий («:») и точек («.»).
Ответ №4:
Это действительно зависит от того, что ($"#2")
делает. Например, если он передается #2
на querySelector
вызов, это приведет к сбою, потому что это недопустимый CSS-селектор.
Я подозреваю, что вы используете какую-то библиотеку, которая делает что-то подобное; это может работать в других браузерах из-за ошибок в их анализаторах выбора CSS или из-за того, что библиотека прослушивает браузер и не запускает тот же код в этих других браузерах.