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


当前回答

接受的答案不包括文本节点(未定义被打印出来)。

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

var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'), htmlString = ''; htmlElements.each(function () { var element = $(this).get(0); if (element.nodeType === Node.ELEMENT_NODE) { htmlString += element.outerHTML; } else if (element.nodeType === Node.TEXT_NODE) { htmlString += element.nodeValue; } }); alert('String html: ' + htmlString); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

其他回答

你能说得更具体一点吗?如果你想让HTML在一个标签里面,你可以这样做:

HTML代码片段:

<p><b>This is some text</b></p>

jQuery:

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

不需要克隆和添加到DOM使用.html(),你可以做:

$('#item-of-interest').wrap('<div></div>').html()
new String(myobj)

如果您想将整个对象序列化为字符串,请使用JSON。

接受的答案不包括文本节点(未定义被打印出来)。

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

var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'), htmlString = ''; htmlElements.each(function () { var element = $(this).get(0); if (element.nodeType === Node.ELEMENT_NODE) { htmlString += element.outerHTML; } else if (element.nodeType === Node.TEXT_NODE) { htmlString += element.nodeValue; } }); alert('String html: ' + htmlString); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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

$('#element-of-interest').prop('outerHTML');