Хоча це дуже давнє питання, я подумав, що було б непогано оновити його останніми відомостями;
Оскільки 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")
)
;
що, на жаль, менш зручно, ніж використовувати просто $()
, але це дає вам більше контролю, наприклад, ви можете виключити теги сценаріїв (він залишить вбудовані сценарії на зразок 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>: 138ms
<div>: 143ms
createElement: 64ms
Схоже , що parseHTML
набагато ближче до createElement
ніж $()
, але все імпульс зникає після того, як упаковка результатів в новий об'єкт JQuery