что я делаю не так?
Использование реального <img>
.
Когда вы используете такие атрибуты, как <img src>
, браузер может исправить ваши значениячтобы сделать их действительными.Так как символы {}
недопустимы в URL-адресе, браузер может закодировать их в %7B%7D
.Это, вероятно, зависит от браузера;Пример Ника, который он говорит, работает неудачно для меня в Firefox.(Он также не работает в IE из-за отсутствия var
на test_template
, но это не связанная с этим проблема.)
Помните, что когда вы пишете элементы HTML, источник HTML не поддерживается.Браузер проанализирует его в загрузке DOM-узлов.Когда вы вызываете html()
(innerHTML
), вы получаете сериализацию этих узлов DOM, которая точно не сохраняет форматирование исходной разметки.Особенно, когда исходная разметка не является действительным HTML, а просто заполнителем для шаблонов.
По этой причине я не буду использовать фактические элементы на странице для шаблонов, и я считаю, что jquery-tmpl поощряет этоего $(element).template()
метод будет ошибкой.Это не единственная проблема, которую я с плагином.Например, если вы поместите data()
или обработчик события на элемент внутри шаблона, эти данные / обработчик будут скопированы случайно в IE, но не в других браузерах, из-за наивного innerHTML
копирования и ужасного взлома идентификации узлов jQuery.
Так что если вы должны использовать jquery-tmpl
, используйте с ним строки, а не узлы.Если нужно, используйте строки, встроенные в <script>
, но не используйте реальные элементы на странице.(Наряду с этой проблемой семантически сомнительно иметь в документе содержимое, которое не является фактическим.)