jQuery将DOM元素作为字符串

时间:2011-11-14 19:41:12

标签: javascript jquery

说我有

$(":input[type=text]:first")

我如何获得

<input type="text" value="" size="28" maxlength="140" tabindex="1" placeholder="search" class="textbox" name="q" autocomplete="off">

假设我在SO上运行它?

更新我不想调用.parent(),因为我在父元素中有很多其他内容。

5 个答案:

答案 0 :(得分:39)

怎么样

$(selector).prop("outerHTML");

答案 1 :(得分:20)

An old trick:

var selector = ":input[type=text]:first";

var str = $(selector).clone().wrap('<div/>').parent().html();

更新由于您正在使用原始选择器的孤立克隆,因此无需担心调用.parent()

答案 2 :(得分:4)

通过附加到已创建的元素来使用jQuery.html()

$('<div/>').append($(":input[type=text]:first").clone()).html()

这是一个提供示例的小提琴:http://jsfiddle.net/Zwbmx/1/

答案 3 :(得分:0)

根据@Blazemonger的回答,如果你要将这个html内容发送到服务器,那么删除所有不必要的标签,空格和换行符是值得的。 t添加任何值。

var quote = $(".invoice") //get hidden print-version DOM element
    .clone()
    .wrap('<div/>')
    .parent()
    .html()
    .replace(/    /g, '') //get rid of indentation spaces
    .replace(/(\r\n|\n|\r)/gm, "") //get rid of line breaks
    .replace(/<!--[\s\S]*?-->/g, ""); //get rid of comment tags

我的html有50kb,在摆脱这些东西后,它减少到4kb!

答案 4 :(得分:-1)

怎么样:

var str = $(selector)[0]

可能会添加一个检查表明返回了一个元素。