题
如何将 jQuery 对象转换为字符串?
解决方案
我假设您需要完整的 HTML 字符串。如果是这样的话,类似这样的事情就可以解决问题:
$('<div>').append($('#item-of-interest').clone()).html();
这有更深入的解释 这里, ,但本质上你创建一个新节点来包装感兴趣的项目,进行操作,删除它,并获取 HTML。
如果您只是在寻找字符串表示形式,那么请使用 new String(obj)
.
更新
我在2009年写了最初的答案。截至 2014 年,大多数主流浏览器均支持 outerHTML
作为原生属性(例如,参见 火狐浏览器 和 IE浏览器),所以你可以这样做:
$('#item-of-interest').prop('outerHTML');
其他提示
使用jQuery的1.6,这似乎是一个更好的解决方案:
$('#element-of-interest').prop('outerHTML');
只要使用获得(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
接受的答案不包括文本节点(未定义被打印出来)。
此代码段解决它:
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>
无需克隆并添加到DOM使用的.html(),你可以这样做:
$('#item-of-interest').wrap('<div></div>').html()
有可能可以使用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 。
不隶属于 StackOverflow