你如何将一个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 。