Чтобы использование jQuery динамично создало разметку, иногда становится полезно иметь его, возвращают фактический HTML, который это генерирует как строка, а не как набор объектов jQuery. Существует ли способ сделать это? Например, здесь:
$("<strong></strong>").text("Hi there!");
Я хочу смочь извлечь строку простого текста
"<strong>Hi there!</strong>"
так, чтобы я мог кэшировать его удаленно. Существует ли способ сделать это?
Да, вы можете использовать функцию html ()
т.е.
$("").text("Hi There!").html();
Вернет «Привет!»
Имейте в виду, что здесь используется innerHTML, поэтому
$("<div><b>Foo</b></div>").html();
вернет
<b>Foo</b>
В результате вам нужно будет заключить ваш код в окружающий его div или span.
Для этого можно использовать плагин outerHTML. Here is one:
jQuery.fn.outerHTML = function(s) {
return (s)
? this.before(s).remove()
: jQuery("<p>").append(this.eq(0).clone()).html();
}
Usage:
alert($("<strong></strong>").text("foo").outerHTML());
// alerts <strong>foo</strong>
Просто вызовите .html(), чтобы получить HTML из любого элемента, включая сгенерированные. Это из сессии инструмента разработчика Chrome:
> $("<div><span>blerg</span></div>")
Object
> $("<div><span>blerg</span></div>").html()
<span>blerg</span>
Видите, первая возвращает объект, вторая - текст.