有没有办法让jQuery输出*实际标记*?

时间:2010-03-04 00:56:39

标签: javascript jquery xhtml

当使用jQuery动态构建标记时,有时让它返回它作为字符串生成的实际HTML,而不是作为一堆jQuery对象。有没有办法做到这一点?例如,这里:

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

我希望能够提取纯文本字符串

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

这样我就可以远程缓存它。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用outerHTML插件。 Here is one

jQuery.fn.outerHTML = function(s) {
    return (s)
    ? this.before(s).remove()
    : jQuery("<p>").append(this.eq(0).clone()).html();
}

用法:

alert($("<strong></strong>").text("foo").outerHTML());
// alerts <strong>foo</strong>

答案 1 :(得分:3)

是的,您可以使用html()函数

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

将返回'Hi There!'

请记住,这使用innerHTML,所以

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

将返回

<b>Foo</b>

因此,您需要将代码包装在周围的div或span中。

答案 2 :(得分:1)

只需调用.html()即可从任何元素中获取HTML,包括生成的元素。这来自Chrome开发人员工具会话:

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

你可以看到,第一个返回一个对象,第二个返回文本。