Хотя это очень старый вопрос, я подумал, что было бы неплохо обновить его свежей информацией;
Начиная с jQuery 1.8 существует функция jQuery.parseHTML (), которая теперь является предпочтительным способом создания элементов. Кроме того, есть некоторые проблемы с анализом HTML через $('(html code goes here)')
, например, официальный сайт jQuery упоминает следующее в одном из примечаний к выпуску :
Расслабленный анализ HTML: вы можете снова иметь начальные пробелы или символы новой строки перед тегами в $ (htmlString). Мы по-прежнему настоятельно рекомендуем использовать $ .parseHTML () при синтаксическом анализе HTML, полученного из внешних источников, и, возможно, в будущем внесете дополнительные изменения в синтаксический анализ HTML.
Для связи с конкретным вопросом приведенный пример можно перевести на:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
что, к сожалению, менее удобно, чем использование just $()
, но дает вам больший контроль, например, вы можете исключить теги сценария (он оставит встроенные сценарии, как, onclick
впрочем,):
> $.parseHTML('<div onclick="a"></div><script></script>')
[<div onclick="a"></div>]
> $.parseHTML('<div onclick="a"></div><script></script>', document, true)
[<div onclick="a"></div>, <script></script>]
Кроме того, вот эталонный ответ из топ-ответа, адаптированный к новой реальности:
JSbin Link
JQuery 1.9.1
$ .parseHTML: 88мс
$ ($. parseHTML): 240 мс
<div> </ div>: 138 мс
<div>: 143 мс
createElement: 64мс
Похоже , что parseHTML
гораздо ближе к createElement
чем $()
, но все импульс исчезает после того, как упаковка результатов в новый объект JQuery