Существует ли способ сделать вывод jQuery *фактическая разметка*?

Чтобы использование jQuery динамично создало разметку, иногда становится полезно иметь его, возвращают фактический HTML, который это генерирует как строка, а не как набор объектов jQuery. Существует ли способ сделать это? Например, здесь:

$("<strong></strong>").text("Hi there!");

Я хочу смочь извлечь строку простого текста

"<strong>Hi there!</strong>"

так, чтобы я мог кэшировать его удаленно. Существует ли способ сделать это?

5
задан helloluis 4 March 2010 в 00:56
поделиться

3 ответа

Да, вы можете использовать функцию html ()

т.е.

$("").text("Hi There!").html();

Вернет «Привет!»

Имейте в виду, что здесь используется innerHTML, поэтому

$("<div><b>Foo</b></div>").html();

вернет

<b>Foo</b>

В результате вам нужно будет заключить ваш код в окружающий его div или span.

3
ответ дан 14 December 2019 в 08:48
поделиться

Для этого можно использовать плагин 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>
3
ответ дан 14 December 2019 в 08:48
поделиться

Просто вызовите .html(), чтобы получить HTML из любого элемента, включая сгенерированные. Это из сессии инструмента разработчика Chrome:

> $("<div><span>blerg</span></div>")
Object
> $("<div><span>blerg</span></div>").html()
<span>blerg</span>

Видите, первая возвращает объект, вторая - текст.

1
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: