Примечание: актуальнейшие браузеры поддерживают элементы HTML , которые обеспечивают более надежный способ повернуть элементы создания из строк. См. ответ Mark Amery ниже для деталей .
Для более старых браузеров и node/jsdom: (который еще не поддерживает элементы во время записи), используйте следующий метод. Это - то же самое использование библиотек, чтобы сделать для получения элементов DOM от строки HTML ( с некоторой дополнительной работой для IE для работы вокруг ошибок с его реализацией
innerHTML
):
function createElementFromHTML(htmlString) {
var div = document.createElement('div');
div.innerHTML = htmlString.trim();
// Change this to div.childNodes to support multiple top-level nodes
return div.firstChild;
}
Примечание, что в отличие от шаблонов HTML это не будет работа для некоторых элементов, которые не могут по закону быть детьми , Если бы Вы уже пользуетесь библиотекой, я рекомендовал бы придерживаться утвержденного библиотекой метода создания элементов от строк HTML: В версии 3.0 Если бы я не особо заботился о микрооптимизации строковой обработки для данного класса, я бы всегда реализовал Я считаю, что это твердые принципы, но на практике это ' С В мире становится все меньше, есть вероятность, что любая строка, с которой вы столкнетесь, в конечном итоге будет содержать Unicode. Поэтому для любых новых приложений вы должны как минимум указать с. update()
метод . jQuery(html)
и jQuery.parseHTML
методы. 3 ответа
__ str __ ()
- старый метод - он возвращает байты. __ unicode __ ()
- это новый предпочтительный метод - он возвращает символы. Имена немного сбивают с толку, но в 2.x мы придерживаемся их из соображений совместимости. Как правило, вы должны поместить все форматирование своей строки в __ unicode __ ()
и создать метод-заглушку __ str __ ()
: def __str__(self):
return unicode(self).encode('utf-8')
str
содержит символы , поэтому одни и те же методы называются __ bytes __ ()
и __ str __ ()
. Они ведут себя так, как ожидалось. __ unicode __
только как более общий. Когда меня действительно волнуют такие мелкие проблемы с производительностью (что является исключением, а не правилом), имея только __ str __
(когда я могу доказать, что в строковом выводе никогда не будет символов, отличных от ASCII), или и то, и другое ( когда оба возможны), может помочь.
__ unicode __ ()
.
Похожие вопросы: