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

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

我假设你要求完整的HTML字符串。 如果是这样的话,像这样的事情将会诀窍:

$('<div>').append($('#item-of-interest').clone()).html(); 

这在这里有更深入的解释,但基本上你创建一个新节点来包装感兴趣的项目,操作,删除它,并获取HTML。

如果你刚刚在字符串表示之后,那么用new String(obj)

更新

我在2009年写了最初的答案。从2014年开始,大多数主流浏览器现在都支持将outerHTML作为本地属性(例如,参见Firefox和Internet Explorer ),因此您可以:

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

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

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

只需使用.get(0)来获取本地元素,并获得它的outerHTML属性:

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

你能更具体一点吗? 如果您试图获取标签内的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> 

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

 console.log($("#my-node")); 

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

 var node = $("#my-node").outerHTML; 

jQuery在这里,所以:

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

返回所有的HTML的东西:

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

这似乎对我很好:

 $("#id")[0].outerHTML 

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

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

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

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

 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.makeArray(obj)实用程序功能:

 var obj = $('<p />',{'class':'className'}).html('peekaboo'); var objArr = $.makeArray(obj); var plainText = objArr[0]; 

如果要将HTML元素进行字符串化以便将其传递到某个元素,并将其解析为元素,请尝试为该元素创建一个唯一的查询:

 // 'e' is a circular object that can't be stringify var e = document.getElementById('MyElement') // now 'e_str' is a unique query for this element that can be stringify var e_str = e.tagName + ( e.id != "" ? "#" + e.id : "") + ( e.className != "" ? "." + e.className.replace(' ','.') : ""); //now you can stringify your element to JSON string var e_json = JSON.stringify({ 'element': e_str }) 

 //parse it back to an object var obj = JSON.parse( e_json ) //finally connect the 'obj.element' varible to it's element obj.element = document.querySelector( obj.element ) //now the 'obj.element' is the actual element and you can click it for example: obj.element.click(); 
 new String(myobj) 

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