如何将jQuery对象转换为字符串?

chi*_*ef7 401 jquery stringification

如何将jQuery对象转换为字符串?

Joh*_*lla 594

我假设你要求完整的HTML字符串.如果是这种情况,这样的事情就可以解决问题:

$('<div>').append($('#item-of-interest').clone()).html(); 
Run Code Online (Sandbox Code Playgroud)

这是在更深入解释在这里,但本质上你犯了一个新的节点包感兴趣的项目,执行操作,删除它,并抓住HTML.

如果您只是在字符串表示之后,那么请继续new String(obj).

更新

我在2009年写了原始答案.截至2014年,大多数主流浏览器现在支持outerHTML作为本机属性(例如,参见FirefoxInternet Explorer),因此您可以:

$('#item-of-interest').prop('outerHTML');
Run Code Online (Sandbox Code Playgroud)

  • 很糟糕的是,没有一种方法可以做到这一点,但无论如何这都是一个很好的解决方案. (24认同)
  • 这将删除头部和身体标签 (2认同)
  • 请注意,您将丢失“数据” (2认同)

nic*_*ckh 190

使用jQuery 1.6,这似乎是一个更优雅的解决方案:

$('#element-of-interest').prop('outerHTML');
Run Code Online (Sandbox Code Playgroud)

  • @ Jean-PhilippeLeclerc在Firefox 15.0.1(linux)上,它就像一个魅力. (4认同)

mpp*_*les 51

只需使用.get(0)来获取本机元素,并获取其outerHTML属性:

var $elem = $('<a href="#">Some element</a>');
console.log("HTML is: " + $elem.get(0).outerHTML);
Run Code Online (Sandbox Code Playgroud)


Ale*_*ell 21

你能更具体一点吗?如果您尝试在标记内部获取HTML,则可以执行以下操作:

HTML片段:

<p><b>This is some text</b></p>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

var txt = $('p').html(); // Value of text is <b>This is some text</b>
Run Code Online (Sandbox Code Playgroud)


小智 8

找出HTML节点(对象)可用的属性和方法的最佳方法是执行以下操作:

console.log($("#my-node"));
Run Code Online (Sandbox Code Playgroud)

从jQuery 1.6+开始,您可以使用outerHTML在字符串输出中包含HTML标记:

var node = $("#my-node").outerHTML;
Run Code Online (Sandbox Code Playgroud)

  • .outerHTML对我不起作用.是否记录在任何地方? (4认同)
  • 它是`$('#my-node').get(0).outerHTML`,如mppfiles的回答 (4认同)

小智 7

jQuery在这里,所以:

jQuery.fn.goodOLauterHTML= function() {
    return $('<a></a>').append( this.clone() ).html();
}
Run Code Online (Sandbox Code Playgroud)

返回所有HTML内容:

$('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all
Run Code Online (Sandbox Code Playgroud)


Joh*_*mar 6

这对我来说似乎很好用:

$("#id")[0].outerHTML
Run Code Online (Sandbox Code Playgroud)

  • 我也在使用它,但这似乎不适用于 Firefox 6.0.1。 (2认同)

Mar*_*pka 5

接受的答案不涵盖文本节点(打印出未定义)。

\n\n

这个代码片段解决了这个问题:

\n\n

\r\n
\r\n
var htmlElements = $(\'<p><a href="http://google.com">google</a></p>\xe2\x86\xb5\xe2\x86\xb5<p><a href="http://bing.com">bing</a></p>\'),\r\n    htmlString = \'\';\r\n    \r\nhtmlElements.each(function () {\r\n    var element = $(this).get(0);\r\n\r\n    if (element.nodeType === Node.ELEMENT_NODE) {\r\n        htmlString += element.outerHTML;\r\n    }\r\n    else if (element.nodeType === Node.TEXT_NODE) {\r\n        htmlString += element.nodeValue;\r\n    }\r\n});\r\n\r\nalert(\'String html: \' + htmlString);
Run Code Online (Sandbox Code Playgroud)\r\n
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n